2013-05-10 37 views
-1

以下方法返回我們指定的命名空間中的所有System.Type類。 但是,我不想全部,我想只能檢索我想要的類型。說我想要的類型INMIRegisterRepository。如何過濾下面的列表?請幫忙。使用lambda表達式的篩選器列表

public static List<Type> TypesInNameSpace(Assembly assembly, string nameSpace) 
{ 
    return assembly 
      .GetTypes() 
      .Where(O => string.Equals(O.Namespace, nameSpace, StringComparison.Ordinal)) 
      .ToList(); 
} 
+3

你知道這段代碼的工作原理嗎? – Jon 2013-05-10 09:19:22

回答

0
var Item = assembly 
       .GetTypes() 
       .FirstOrDefault(O => string.Equals(O.Namespace, 
             "INMIRegisterRepository", 
             StringComparison.Ordinal)); 

或者,如果你想訪問返回的列表中,則:

var yourList = TypesInNameSpace(...... 

var Item = yourList.FirstOrDefault(O => string.Equals(O.Namespace, 
              "INMIRegisterRepository", 
              StringComparison.Ordinal)); 
+0

我想列表對象因爲我們的方法期望列表對象。當我使用下面我得到異常 - 不能隱式轉換類型'System.Type'到'System.Collections.Generic.List ':代碼:列表 lockCaches = types.FirstOrDefault(O => string.Equals(O。命名空間, 「INMIRegisterRepository」, StringComparison.Ordinal)); – mmssaann 2013-05-10 10:32:36

0

只需使用Assembly.GetType

assembly.GetType("INMIRegisterRepository"); 

使用Lambda表達式可以這樣做:

assembly.GetTypes().Where(t => t.GetType() == typeof(INMIRegisterRepository)) 
+0

*程序集*不可枚舉 – I4V 2013-05-10 20:55:00

+0

@ I4V謝謝,修正。 – CloudyMarble 2013-05-13 05:00:30