在某些项目中我们使用泛型,我们得到很多这样的行:
Line<SomeTClass,SomeCClass> myLine =
(Line<SomeTClass,SomeCClass>)LineFactory.CreateLine(...)
我们可以声明本地别名,使用
using X = Line<SomeTClass,SomeCClass>
。
然后我们可以写,
X myLine = (X)LineFactory.CreateLine(...)
。
我们有很多
<T,C>
的组合,但我们经常使用相同的。是否可以全局声明 using,这样我们就不必在每个文件中声明别名?
没有全局别名之类的东西。您可以做的是使用类型推断来简化您的声明:
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>(...) { ... }
}
不,您无法创建全局别名。
这可以通过添加文件来实现,例如带有以下声明的
GlobalUsings.cs
:
global using X = Full.Namespace.Line<SomeTClass,SomeCClass>;
如果更有意义,您还可以将其添加到项目中现有文件的顶部。