gpt4 book ai didi

c# - 如何在运行时确定接口(interface)成员是否已实现?

转载 作者:太空狗 更新时间:2023-10-30 00:32:58 27 4
gpt4 key购买 nike

我有一个名为 IStructuredReader 的接口(interface),它从文件中读取一些结构化数据并将其显示在表单中。它有一个名为 Sync() 的成员,在实现时会扫描数据以查找用户指定的数据模式。

IStructuredReader 的某些实现没有同步功能。这些实现为 Sync() 方法抛出 NotImplementedException。我希望能够检查此方法是否正在实现,如果没有,我可以将表单上的按钮调暗。

我可以想出很多方法来做到这一点,所有这些看起来都很笨拙和复杂:

  1. Sync 方法分离到它自己的接口(interface)中,为那些支持该功能的实现继承它,并尝试将读取器对象转换为它以识别该功能,

  2. 编写一个 NotImplementedAttribute,用它装饰成员,并使用反射检查属性是否存在,

  3. 向接口(interface)添加一个 HasSyncCapability bool 属性。

是否有规范的方式来完成此操作?

最佳答案

这听起来你真的应该有两个接口(interface)。您的 Sync() 方法显然是在您的基本接口(interface)上添加功能,这表明这确实是一个单独的问题,因为它不是 IStructuredReader 的要求。我建议为支持此功能的类型添加第二个接口(interface),这样可以很容易地在您的 View 层中进行检查。

关于c# - 如何在运行时确定接口(interface)成员是否已实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14365512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com