В C # есть ли способ определить синоним типа? - PullRequest
0 голосов
/ 02 февраля 2019

В моем проекте на C # мне нужен длинный тип объединения в форме:

System.Tuple<..., ..., ...>

, где ... - это компоненты с именами, достаточно длинными, чтобы растянуть все объявление типа кортежадля ширины всей строки.

Поддерживает ли C # способ сокращения этого?

Я представляю что-то вроде синонимов типа Хаскелла , где я могу объявить короткий типимя для использования вместо длинной так же легко, как я могу объявить новую переменную.

Я пытался использовать var, но так как мне нужно объявить тип параметра для delegate, яполучить сообщение об ошибке «контекстное ключевое слово var может появляться только в объявлении локальной переменной или в режиме сценария»;похоже, что простое использование var не подойдет для моего случая.

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Прямо из документации

с использованием директивы (C # Reference)

Для создания псевдонима для пространства имен или типа.Это называется директивой использования псевдонима.

using Project = PC.MyCompany.Project;

Например,

using ShortTypeName = My.Very.Silly.Long.TypeName.That.is.VerySuspiciousAndProbablyShouldBeRefactoredAnyway;`
using ShortOtherTypeName = My.Very.Silly.Long.TypeName.That.is.VeryOtherSuspiciousAndProbablyShouldBeRefactoredAnyway;`

internal class Program
{
    private (ShortTypeName , ShortOtherTypeName ) _myLovelyTuple;
0 голосов
/ 02 февраля 2019

Существует:

using MyAlias = MyLongType

Он называется с использованием директивы псевдонима .Это также работает для Пространств имен .Больше информации здесь .

Однако это работает только внутри 1 файла.Вам нужно либо написать его в каждом файле, который вы будете использовать, либо использовать обходной путь:

Наследовать от класса с типом long и ничего не добавлять к функциональности.

Пример:

class  MyAlias: MyLongType{}
...