我想知道,是否可以创建一个扩展方法,它将与一组不同类型的工作提供它们具有相同的属性? 例如:具有相同属性的各种类型的通用扩展方法
public static T GetObjectByIdOrName<T>(this IEnumerable<T> collection, Mapping mapping) where T : IType1, IType2, IType3
{
return collection.FirstOrDefault(x => x.Id == mapping.ObjectId || x.Name == mapping.ObjectName);
}
所有类型有编号和名称的属性,所以我希望这将是可能的 - 但是,编译器告诉我,有Type1.Id和type2标识之间的暧昧参考...
有什么办法可以实现这个吗? (我无法为它们创建公共基地)
这些类在你的控制下吗? – Colin
该约束意味着类型必须实现所有3个接口。如果他们都暴露相同的属性,那么它不知道应该通过哪个接口,在任何属性明确实现的情况下。 – juharr
您可以重构使每个接口使用一个基本接口吗? –