【问题标题】:Marker interface in c# [closed]c#中的标记接口[关闭]
【发布时间】:2012-04-17 23:18:18
【问题描述】:

我目前正在尝试在 c# 中实现标记接口。不过我还没做过,所以想请教一下。

解决我的问题:
我有一个接口工厂,工厂包含几个应该是标记接口的子接口,因为它们没有属性或方法或其他东西。所以标记接口应该实现接口工厂。我的标记接口是例如汽车、卡车等。标记接口是为 MyBMW、MyAUDI 等的汽车实现的。我怎样才能实现这样的模式?谢谢!

interface Factory
{
    string[] process (string [] entry);
}

【问题讨论】:

  • 您还没有发布标记界面。它有一个方法。标记接口没有要实现。
  • 我认为与其决定解决方案并询问如何解决,如果您提出问题,我们可以更好地提供帮助,我们会看看标记界面是否有用。
  • 是的,但是 Car、Trucks 和 Bus 应该使用接口 Factory 但是 Car、Truck 和 Bus 没有任何方法,因为 MyBMW 和 MyAUDI 应该实现标记接口 Car,它们有必要的方法包括在内。

标签: c# design-patterns interface attributes marker-interfaces


【解决方案1】:

您应该考虑使用属性而不是接口来标记类。

然后您可以在代码中决定如何在设置属性时处理特定实例。

【讨论】:

  • 我还是更喜欢接口。属性有自己的位置,但标记界面“感觉”更好。
  • 应用于类的属性通常不会影响任何派生类(检查类中的属性的代码也可以检查父类的属性)。相比之下,如果一个类实现了标记接口,那么所有派生类也会这样做。如果要强制派生类宣传某个特性,请使用标记接口。如果希望允许派生类决定是否宣传某个特性,请使用属性。
【解决方案2】:

我相信你想实现工厂模式。我建议你在这里看一个例子: http://en.wikipedia.org/wiki/Factory_method_pattern

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多