假設我正在使用第三方庫中的多個類,所有這些類都包含一個int ID {get;}屬性。例如:class A { ... int ID {get;} ...}class B { ... int ID {get;} ...}ID 是我正在編寫的方法中需要使用的唯一屬性,它需要對 A 或 B 的引用。我已經聲明了一個接口:interface IHasID{ int ID {get;}}但是我不能在調用我的方法時將其視為A或B視為IHasID。例如,在 Swift 中,我可以聲明一個符合“協議”(Swift 的接口版本)的擴展。我沒有看到用 C# 做到這一點的方法。引用共享屬性的不相關類的最接近方法是什么?
3 回答

侃侃無極
TA貢獻2051條經驗 獲得超10個贊
制作一個具有以下所有內容的通用包裝類:
IHasID接口的實現,
一個接受T和Func<T,int>獲取 ID 的構造函數,以及
包裝值的吸氣劑。
下面是一個例子:
class HasId<T> : IHasId {
private readonly Func<T,int> idGetter;
public Value {get;}
public Id => idGetter(Value);
public HasId(T val, Func<T,int> idGetter) {
Value = value;
this.idGetter = idGetter;
}
}
- 3 回答
- 0 關注
- 212 瀏覽
添加回答
舉報
0/150
提交
取消