c# - 为我不拥有的类声明符合 C# 接口
问题描述
假设我正在使用第三方库中的多个类,所有这些都包含一个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# 做到这一点的方法。引用共享属性的不相关类的最接近方法是什么?
解决方案
不,目前没有办法做到这一点。你可以:
- 只需使用动态类型并
ID
在编译时使用这种方式而不进行类型检查 - 将每个库类包装在您自己的实现接口的类中
- 要求维护人员添加接口
这个特性可能会在某个时候添加到 C# 中。有关详细信息,请参阅 Mads Torgersen关于形状的问题- 但我怀疑这还有很长的路要走。
推荐阅读
- google-cloud-platform - Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential automl
- xml - How to convert an xml file to dictionary in vb using paste special
- javascript - How to change createTextNode value using switch
- macos - Dialogs are displayed as tabs in Android Studio IDE then the IDE becomes unresponsive
- c# - Declare foreign keys using Data Annotation to use ReferentialConstraints collection?
- azure - ARM template fails when creating event hub in multiple regions with multiple auth rules
- linux - Bash script does not wait for user to enter response
- eclipse - Missing artifact in vaadin start project (maven issue)
- python - Output next row from criteria in Python DataFrame
- iis - Reverse proxy server configuration with 2 different servers in iis