在某些项目中我们使用Generics,我们得到了很多这样的行:
Line<SomeTClass,SomeCClass> myLine =
(Line<SomeTClass,SomeCClass>)LineFactory.CreateLine(...)
我们可以使用using X = Line<SomeTClass,SomeCClass>
声明本地别名。
然后我们可以写X myLine = (X)LineFactory.CreateLine(...)
。
我们有很多<T,C>
的组合,但我们经常使用相同的组合。是否有可能全局声明使用,以便我们不必在每个文件中声明别名?
答案 0 :(得分:5)
不是全球别名。您可以做的是使用类型推断来简化声明:
var myLine = (Line<SomeTClass, SomeCClass>)LineFactory.CreateLine(...);
如果这对于推理系统来说不够具体,可以使CreateLine()方法通用以强制执行它:
var myLine = LineFactory.CreateLine<Line<SomeTClass, SomeCClass>>(...);
并给出LineFactory类型的名称,甚至可以简化它:
var myLine = LineFactory.CreateLine<SomeTClass, SomeCClass>(...);
这最后一个选项在某种程度上对我来说是“正确的”,我无法完全表达出来。如果你需要一点帮助,方法声明就像这样:
public static class LineFactory
{
public static Line<T,C> CreateLine<T,C>(...) { ... }
}
答案 1 :(得分:4)
不,您无法创建全局别名。