c# - 在没有子类化的情况下为复杂类型创建别名?

标签 c# alias

我的程序中有一个复杂的类型,导致行很长。在这里:

List<FruitCallback<Fruit>>

这是一个代码行太长且令人困惑的示例:

private static Dictionary<Type, List<FruitCallback<Fruit>>> callbacks = new Dictionary<Type, List<FruitCallback<Fruit>>>();

我可以像这样子类化它来为它创建一个别名:

class FruitCallbacks : List<SomeClass.FruitCallback<Fruit>> { }

但我可以发誓我记得在某处读过关于为这样的东西起别名的方法,这样就不需要空类了。

最佳答案

您可以添加一个完全合格 using声明你的类文件(在使用指令部分)为类命名。这有点冗长。

using MyType = System.Collections.Generic.List<YourNamespace.FruitCallback<YourNamespace.Fruit>>;

然后你可以MyType代替 List<FruitCallback<Fruit>>在您的代码中。

完整的工作示例。

// aliased outside the namespace
using MyList = System.Collections.Generic.List<Bar.FruitCallBack<Bar.Fruit>>;

namespace Bar
{
    // alternately, can be aliased inside the namespace 
    // using MyList = System.Collections.Generic.List<FruitCallBack<Fruit>>;        

    class Program
    {
        static void Main()
        {
            var myList = new MyList();
        }
    }

    public class FruitCallBack<T> { }
    public class Fruit { }
}

关于c# - 在没有子类化的情况下为复杂类型创建别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7829530/

相关文章:

c# - ASP.NET MVC F# Controller 操作忽略参数

c# - 显式类型转换的好处?

mysql - 基于列值的动态列别名

用于 cd 到 git root 的 shell 命令的 git 别名未按预期工作

sql - Oracle 自动重命名 select 中的列?

c# - 尝试发布 SQL CLR 数据库的日期时间类型不匹配

c# - 为什么在使用 Accord.NET 运行 BackPropagation 时出现 OutofRangeException?

c# - 我可以在没有 AzureWebJobsStorage 连接字符串的情况下执行 Azure webjobs 吗?

bash - 列出 fish/bash shell 中所有可用的别名

bash - 启动 Python .py 脚本的别名