在某些项目中我们使用Generics,我们得到了很多这样的行:
Line<SomeTClass,SomeCClass> myLine =
(Line<SomeTClass,SomeCClass>)LineFactory.CreateLine(...)
Run Code Online (Sandbox Code Playgroud)
我们可以声明本地别名using X = Line<SomeTClass,SomeCClass>.
然后我们可以写,X myLine = (X)LineFactory.CreateLine(...).
我们有很多组合,<T,C>但我们经常使用相同的.是否可以全局声明使用,以便我们不必在每个文件中声明别名?
没有全球化的别名.你可以做的是使用类型推断来简化你的声明:
var myLine = (Line<SomeTClass, SomeCClass>)LineFactory.CreateLine(...);
Run Code Online (Sandbox Code Playgroud)
如果这对于推理系统来说不够具体,可以使CreateLine()方法通用以强制执行它:
var myLine = LineFactory.CreateLine<Line<SomeTClass, SomeCClass>>(...);
Run Code Online (Sandbox Code Playgroud)
并给出LineFactory类型的名称,甚至可以简化它:
var myLine = LineFactory.CreateLine<SomeTClass, SomeCClass>(...);
Run Code Online (Sandbox Code Playgroud)
这最后一个选项在某种程度上对我来说是"正确的",我无法完全表达出来.为了防止你需要一些帮助,方法声明看起来像这样:
public static class LineFactory
{
public static Line<T,C> CreateLine<T,C>(...) { ... }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2429 次 |
| 最近记录: |