假设我正在使用第三方库中的多个类,所有这些类都包含一个 int ID {get;}
属性。例如:
class A {
...
int ID {get;}
...
}
class B {
...
int ID {get;}
...
}
ID
是我需要在我正在编写的方法中使用的唯一属性,它需要对 A 或 B 的引用。我已经声明了一个接口(interface):
interface IHasID
{
int ID {get;}
}
但是在调用我的方法时,我不能将 A
或 B
视为 IHasID
。
例如,在 Swift 中,我可以声明一个符合“协议(protocol)”(Swift 的接口(interface)版本)的扩展。我看不到用 C# 做到这一点的方法。引用共享属性的不相关类的最接近方式是什么?
最佳答案
不,目前无法做到这一点。你可以:
- 只需使用动态类型并以这种方式使用
ID
,而无需在编译时进行类型检查 - 将每个库类包装在您自己的确实实现接口(interface)的类中
- 要求维护者添加一个接口(interface)
可能此功能将在某个时候添加到 C# 中。请参阅 Mads Torgersen 的 issue about shapes有关详细信息 - 但我怀疑这还有很长的路要走。
关于c# - 声明不属于我的类符合 C# 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50933303/