为没有子类化的复杂类型创建别名?

时间:2011-10-19 23:40:57

标签: 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>> { }

但是我能够发誓我记得在某个地方读到一个别名的方法,这样就不需要空类了。

3 个答案:

答案 0 :(得分:7)

您可以将完全限定的 using语句添加到类文件(在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 { }
}

答案 1 :(得分:3)

你可以这样做:

using Foo =  List<FruitCallback<Fruit>>;

然后你可以在任何地方使用Foo List<FruitCallback<Fruit>> 示例:

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

class Program
{
    static void Main()
    {
      Foo f = new Foo();
    }
}

答案 2 :(得分:1)

也许您正在考虑通过using语句使类型别名?

using MyType = MyCompany.MyProject.DataAccess.Interfaces.MyType;