C#访问通用对象的属性

Jim*_*mbo 9 c# generics types properties

我有一个方法可以计算每个供应商,客户和制造商的联系人数量(这是一个尝试使解释更容易的方案!)

这些模型都是由Linq到SQL类创建的.每个供应商,客户和制造商可能有一个或多个联系人

public int CountContacts<TModel>(TModel entity) where TModel : class
{
    return entity.Contacts.Count();
}
Run Code Online (Sandbox Code Playgroud)

上面当然不起作用,因为'实体'是通用的,并且不知道它是否具有"联系人"属性.有人可以帮忙解决这个问题吗?

kem*_*002 6

一种简单的方法是将接口附加到通用中实现的类.

public int CountContacts<TModel>(TModel entity) where TModel : IContacts


interface IContacts
{
   IList<Contact> Contacts {get;} //list,Ilist,ienumerable
}
Run Code Online (Sandbox Code Playgroud)