我有一个接受泛型参数TD的函数,我需要将其限制为泛型接口。例如:
public T DefinitionPopulate<T, TD>(IDataReader dr)
where T: class, new()
where TD: IEntityDefinition<T, Guid>, new()
{
T t = new T();
TD td = new TD();
td.DoInterfaceMethod(t, dr);
...
return t;
}
但是,我们使用了许多不同的 IEntityDefinition:
IEntityDefinition<SomeClass, Guid>
IEntityDefinition<SomeClass, int>
IEntityDefinition<SomeClass, double>
...etc...
但是我的函数DefinitonPopulate
根本不使用第二个泛型参数,它并不关心它是什么。但它确实需要处理我们现在和将来的所有定义。因此,我似乎被困在DefinitionPopulate
为我们拥有的每个 IEntityDefinition 第二个通用参数创建一个新签名...... 除非......
问题:有什么方法可以告诉编译器我不在乎第二个类型参数是什么?通配符之类的东西?
编辑:我接受了我所做的答案,因为这是我所问问题的真实答案。但是,这个答案提供了一个很好的解决方案,并且是我最终用来解决我遇到的潜在问题的方法 - 请务必检查一下!