代码之家  ›  专栏  ›  技术社区  ›  User

使用空父类仅对其他类进行分组。有更好的方法吗?

  •  1
  • User  · 技术社区  · 15 年前

    我有几个概念上属于同一层的类。它们没有公共属性,这就是它们不需要从某个基类继承的原因。

    我还有一些处理这些类的方法。其中一些是以下样式的模板:

    public SomeClass
    {
        public void SomeMethod<T> (T argument) where T : BaseClass
        {
            /* Do something */
        }
    }
    

    当然,我让这些其他类派生自基类,基类是空的,除了对其他类进行分组之外,没有其他用途(至少目前是这样)。

    这可能不是一个好方法,但无论如何我正在使用它。

    有更好的方法吗?

    编辑:经过考虑,我决定不采用这种方法,只是删除了基类。没有它就够了。无论如何,我不能使代码绝对完美,不需要的东西越少越好。

    3 回复  |  直到 15 年前
        1
  •  7
  •   Jeff Mattfield Jeff Mattfield    15 年前

    使用标记(空)接口而不是基类:

    public void SomeMethod<T> (T argument) where T : ISomeInterface
    
        2
  •  2
  •   pluckyglen    15 年前

    +1.杰夫的回答。标记(“标记”)接口在C#和Java框架中都很常见。它们允许您将一个公共类型分配给“类a”,以便另一个类(“类B”)可以忽略类a的具体类型。

    与任何这种灵活的方式一样,它很容易被滥用,但在你的情况下,它肯定会填补你的账单。

        3
  •  0
  •   Chris Shaffer    15 年前

    也许一个更具体的例子可以提供更多的视角。就目前情况而言,我认为你不应该以这种方式分组。

    您的SomeMethod()方法显然没有引用参数的任何属性(或者如果它引用了,那么它也必须将参数强制转换为不同的类型);“从您自己”保护代码的原因是什么?如果调用传入未批准对象的方法,会发生什么情况?

    如果参数约束是绝对必要的,我建议像Grybyx一样使用接口。这样可以避免多重继承的问题。