Динамически получить значение по умолчанию для типа параметра - PullRequest
8 голосов
/ 24 января 2009

Вопрос

Я пытаюсь динамически получить значение по умолчанию для типа, указанного в ParameterInfo. _methods [methodName] возвращает объект MethodInfo.

К сожалению, компилятору не нравится бит "paramType" внутри значения по умолчанию (paramType). Я в тупике.

Error

Не удалось найти имя типа или пространства имен 'paramType' (отсутствует директива using или ссылка на сборку?)

C: \ Applications \ ... \ MessageReceiver.cs Строка 113

Пример

object blankObject = null;
foreach (var paramInfo in _methods[methodName].Key.GetParameters())
{
    if (paramInfo.Name == paramName)
    {
        Type paramType = paramInfo.ParameterType;
        blankObject = (object)default(paramType);
    }
}
parameters[i] = blankObject;

Ответы [ 2 ]

26 голосов
/ 24 января 2009

Это довольно просто реализовать:

public object GetDefault(Type type)
{
    return type.IsValueType ? Activator.CreateInstance(type) : null;
}
1 голос
/ 24 января 2009

Я думаю, что default работает только с реальным типом. Это ярлык Complier, а не фактический метод. Хорошо работает с дженериками. например:

public void MyMethod<T>(T obj)
{
   T myvar = default(T);
}

Проверьте этот вопрос, который я недавно отправил:

Значение по умолчанию для универсальных элементов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...