2014-07-10 8 views
0

我在這裏有一個有趣的案例。我有一個方法調用作爲使用通用代理參數與param關鍵字檢查空值

bool pass= Check.CheckNotNull<RemoveRoleFromUserCommand>(x => x.RoleName, x => x.UserId); 

現在,我想使這個方法定義是這樣的..

public static void CheckNotNull<T>(params Expression<Func<T, object>>[] @params) 
    { 
     return @params.All(x=> .....); 
    } 

如何檢查所有的值在@params代表所有值,我已經通過。

+1

爲什麼'表達>'和不'Func鍵'? – Enigmativity

+0

@Enigmativity是的,我同意,Func <>是正確的方法,因爲我沒有遍歷樹元素 – Joy

回答

3

那麼,如果你想調用代表,你需要一個T的實例。所以補充一點,作爲一個參數。

public static bool CheckNotNull<T>(T item, params Func<T, object>[] @params) 
{ 
    return @params.All(selector => selector(item) != null); 
} 

響應於該評論:

public static bool CheckNotNull<T>(T item, params Func<T, object>[] @params) 
{ 
    return @params.All(selector => 
     { 
      var selected = selector(item); 
      return selected is string? string.IsNullOrEmpty(selected as string) : selected != null; 
     }); 
} 
+0

如果我需要檢查相同的對象是否爲字符串類型,該怎麼辦?我知道這會奏效。以防萬一,如果對象是一個字符串,我希望它被檢查的字符串/對象類型?即我談論'String.isNullorempty()' – Joy

+0

@Joy你可以檢查是否選擇器(項目)是字符串和定製驗證邏輯 –

+0

@Joy這是一個完全不同的問題,但我已經更新了我的答案。 – dcastro

相關問題