Как я могу получить значение по умолчанию для типа не универсальным способом? - PullRequest
5 голосов
/ 06 февраля 2009

Я знаю, что ключевое слово "default" возвращает значение по умолчанию статически определенного типа, как показано, например, в этот вопрос .

Однако, учитывая экземпляр типа, есть ли простой способ получить значение по умолчанию для этого типа, динамически? Единственный способ, который я нашел при поиске, это это :

static object DefaultValue(Type myType)
{
    if (!myType.IsValueType)
        return null;
    else
        return Activator.CreateInstance(myType);
}

Но я бы хотел избежать класса Activator, если это возможно.

Ответы [ 2 ]

7 голосов
/ 06 февраля 2009

Почему вы хотите избежать Activator? По сути, - это способ сделать это.

Я имею в виду, что вы могли бы написать универсальный метод, а затем вызвать его с помощью рефлексии, но это довольно отвратительный "длинный отрезок", чтобы избежать Activator.

6 голосов
/ 06 февраля 2009

Это, вероятно, ваш лучший маршрут.

Я бы не боялся использовать здесь класс Activator. Это довольно стандартный класс, от которого зависят компиляторы. Например, этот код VB

Public Sub Example(Of T as New)()
  Dim x = new T()
End Sub

Переводит примерно в этот код

Public Sub Example(Of T As New)()
  Dim x = Activator.CreateInstance(OF T)
ENd Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...