Создать псевдоним для сложного типа без подклассов? - PullRequest
4 голосов
/ 20 октября 2011

У меня есть сложный тип в моей программе, который приводит к очень длинным строкам.Вот оно:

List<FruitCallback<Fruit>>

Вот пример, где строка кода просто слишком длинная и запутанная:

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

Я могу создать для нее псевдоним, подклассифицировав его так:

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

Но я мог бы поклясться, что помню, что где-то читал о способе создания псевдонима, подобного этому, чтобы пустой класс не был необходим.

Ответы [ 3 ]

7 голосов
/ 20 октября 2011

Вы можете добавить полностью квалифицированный оператор 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 { }
}
3 голосов
/ 20 октября 2011

вы можете сделать это:

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();
    }
}
1 голос
/ 20 октября 2011

Может быть, вы думали о псевдониме типа с помощью оператора using?

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