假设我正在使用第三方库中的多个类,所有这些类都包含一个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 关注
- 177 浏览
添加回答
举报
0/150
提交
取消