C# typedef

| рубрика: Заметки | автор: st

Хочется дать по мозгам проектировщикам C#, не предусмотревшим элегантного решения создания псевдонима для типов.

В Delphi:

interface
type
  TEntityId = integer;

В C++ (пишем в заголовочный файл AppTypes.h):

typedef int TEntityId;

в коде

#include "AppTypes.h"

В C# три варианта и все плохие:

using TEntityId = System.Int32 // видимость только в текушем файле

public class TEntityId : System.Int32  // не работает для простых типов и sealed-классов

public class TEntityId<int>  // громоздкая конструкция, лишний код манипуляции значением
{
  private int еntityId;
  public int Value { get... set... }
}

то же, но с параметризацией:

public class TEntityId<ТTypeOfId>
{
  private ТTypeOfId еntityId;
  public ТTypeOfId Value { get... set... }
}

Зачем это надо? Представьте, что мне надо вместо TEntityId = int использовать Guid или Int64...