c# - 声明不属于我的类符合 C# 接口(interface)

标签 c# interface

假设我正在使用第三方库中的多个类,所有这些类都包含一个 int ID {get;} 属性。例如:

class A {
    ...
    int ID {get;}
    ...
}

class B {
    ...
    int ID {get;}
    ...
}

ID 是我需要在我正在编写的方法中使用的唯一属性,它需要对 A 或 B 的引用。我已经声明了一个接口(interface):

interface IHasID
{
    int ID {get;}
}

但是在调用我的方法时,我不能将 AB 视为 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/

相关文章:

c# - 发送电子邮件而不在已发送文件夹中留下副本 outlook c#

C# 替换为混合值

c# - Azure 容器应用服务。 Docker 运行参数?

c# - 是否可以将接口(interface)作为松散耦合的参数

Kotlin 通用接口(interface)解析器

xcode - XCode 中将委托(delegate)或协议(protocol)的方法添加到 .m 文件的最有效方法是什么?

c# - ViewBag、ViewData、TempData、Session - 如何以及何时使用它们?

c# - 在 silverlight 项目中引用 asp.net c# 类/方法

go - 为什么我不能在 go 中将 `func() []int` 作为 `func() []interface{}` 传递?

iphone - 以编程方式将 UISearchBar 添加到 UITableView