我想知道,是否可以創建一個擴展方法,它將與一組不同類型的工作提供它們具有相同的屬性? 例如:具有相同屬性的各種類型的通用擴展方法
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
您可以重構使每個接口使用一個基本接口嗎? –