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

本文关键字:复杂 类型 创建 别名 子类 | 更新日期: 2023-09-27 18:11:40

我的程序中有一个复杂的类型,导致非常长的行长度。

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 directives部分)来别名类。这有点啰嗦。

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 { }
}

你可以这样做:

using Foo =  List<FruitCallback<Fruit>>;

那么您可以在需要使用List<FruitCallback<Fruit>>的任何地方使用Foo例子:

using System;
using System.Collections.Generic;
using Foo =  List<FruitCallback<Fruit>>;
class Program
{
    static void Main()
    {
      Foo f = new Foo();
    }
}

也许您正在考虑通过using语句混淆类型?

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