【发布时间】:2011-06-14 19:30:37
【问题描述】:
有没有办法给一个C#类起多个名字,例如:
类Foo{}
class AlternativeFooName 指的是 Foo
我希望能够通过 Foo 和 AlternativeFooName 这两个名称访问 Foo,但不必从 Foo 继承。
为此的应用程序会给一个类一个长的描述性名称,但在使用它时能够缩写它,例如:
而不是 Foo f= 新的 Foo(); 能够使用以下具有相同效果: F f= 新的 F();
【问题讨论】:
-
using AlternativeFooName = Foo;适合你吗? -
我不认为必须处理具有多个名称的同一个类的开销(就开发人员对代码的理解而言)可以通过键入更少字符来使用这样的小优势来抵消一类。此外,使用 Intellisense 似乎完全没有必要,因为人们通常可以访问一个类而无需输入整个名称。
-
@Kibbee:通常情况下,“这取决于”。当我有两个属于不同程序集的名称不明确的类时,我发现类型别名很好,这比您想象的更频繁(例如,当将两个不同的供应商系统粘合在一起时,每个人都有自己的 Customer 或 Order 类)。当类型别名在手腕上更容易使用时,为什么要使用完全限定的命名空间来区分 Initech 的 Customer 类和 MegaCorp 的 Customer。
-
名称应该是一个简洁但足够描述性的名称,并且您应该在该类的文档/cmets 中放置一个“长描述”。
-
@Juliet:如果原因是为了解决冲突的命名空间,我会说这是一个很好的理由。虽然我可能会选择延长课程的长度。即,Customer = AbcCustomer,其中 Abc 是它所在的命名空间的简写。由于需要多个名称的唯一原因被列为“减少打字”,这似乎是个坏主意。
标签: c# class inheritance syntax