Вопрос по поводу типов T - PullRequest
2 голосов
/ 12 марта 2011

Из моего вопроса @ Можно ли сделать метод случайного типа? Я получил это:

public static T GetParameterValue<T>(Parameter source)
{
    return (T)source.Value;
}

Теперь мне интересно, возможно ли также изменить его каким-либо образом, чтобы я мог установить T для Parameter.Type?

Так GetParameterValue(ABoolParameter), где ABoolParameter.Type = bool, ABoolParameter.Value=true

и вернуть его как логическое значение со значением true?

и для строки:

GetParameterValue(AStringParameter), где AStringParameter.Type = string, AStringParameter.Value = "somestring"

и вернуть его в виде строки со значением "somestring"?

Значит, он должен возвращать bool без моего объявления T как bool раньше?

Ответы [ 2 ]

1 голос
/ 12 марта 2011

Вы думаете об этом?

public static void SetParameterValue<T>(this Parameter param, T value)
{
    param.Value = value;
    param.Type = typeof(T);
}

Это зависит от того, что Type на Параметре. Вы можете создать кучу if / else операторов, если это не фактический System.Type, но это может быть не самая читаемая вещь.

1 голос
/ 12 марта 2011

Не уверен, что вы можете сделать это. И даже если вы можете, другим (более начинающим) разработчикам может быть немного непонятно читать / поддерживать код.

В качестве альтернативы вы можете использовать dynamic (или даже просто ol * object ).

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