有沒有什麼方法可以檢測類中泛型參數中指定的類型?使用反射識別類的通用類型
例如,我有三類以下:
public class Customer
{ }
public class Repository<T>
{ }
public class CustomerRepository : Repository<Customer>
{ }
public class Program
{
public void Example()
{
var types = Assembly.GetAssembly(typeof(Repository<>)).GetTypes();
//types contains Repository, and CustomerRepository
//for CustomerRepository, I want to extract the generic (in this case, Customer)
}
}
對於每個庫對象的帶回來,我希望能夠告訴指定什麼類型。
這可能嗎?
編輯
感謝@CuongLe,得到這個這是工作,但看起來雜亂無章.... (也ReSharper的幫助;))
var types = Assembly.GetAssembly(typeof(Repository<>))
.GetTypes()
.Where(x => x.BaseType != null && x.BaseType.GetGenericArguments().FirstOrDefault() != null)
.Select(x => x.BaseType != null ? x.BaseType.GetGenericArguments().FirstOrDefault() : null)
.ToList();
這將是更容易幫助,如果你提供有效的C#。而第三類,雖然有效,你的意思是像公共類CustomerRepository:儲存庫'? –
* var repositories = Assembly.GetAssembly(typeof(Repository <>))*這是有效的嗎? –
@CongLong是的,它是 – Alex