【问题标题】:Should I use a Marker Interface or not?我应该使用标记接口吗?
【发布时间】:2012-04-27 20:46:56
【问题描述】:

我有一个类,它有许多属性,其中一个是对象,我们称之为ExtraData。这可以是三种不同类型中任何一种的对象,所有三种类型之间没有共享字段。

我是否应该创建一个所有三个对象类都实现的标记接口并使 ExtraData 属性成为该接口类型?我读过的所有内容都说要在 .NET 中避免这种情况,并尽可能使用自定义属性。如果我这样做,我会让 ExtraData 成为一个简单的对象并检查属性以确定它的类型吗?如果我想使用这些数据、检查属性并相应地进行转换,这似乎需要做很多额外的工作。

这是“不使用标记接口”规则的例外吗?还是我遗漏了一些明显的东西?

谢谢。

【问题讨论】:

  • 一个标记接口仍然意味着大量的类型检查和强制转换来实际使用数据,不是吗?过去我使用object 并在其中放置自定义密封类,然后想要使用它的代码可以简单地检查给定类型。只有 1 次检查和 1 次施法,效果很好。

标签: .net interface marker-interfaces


【解决方案1】:

目前还不清楚你的意图是什么。要回答您的实际问题,使用这样的接口是完全可以接受的,并且忽略该方法的智慧,如果您需要将属性的值限制为少数类型,这似乎是一种合法的方法。

但实际上,可能有更好的方法,但如果没有更多关于你在做什么的信息,我无法提出任何建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多