У меня есть метод, который должен преобразовать строку универсального типа:Преобразовать строку T
T GetValue<T>(string name)
{
string item = getstuff(name);
return item converted to T // ????????
}
T может быть ИНТ или дату.
У меня есть метод, который должен преобразовать строку универсального типа:Преобразовать строку T
T GetValue<T>(string name)
{
string item = getstuff(name);
return item converted to T // ????????
}
T может быть ИНТ или дату.
вы можете использовать Convert.ChangeType
T GetValue<T>(string name)
{
string item = getstuff(name);
return (T)Convert.ChangeType(item, typeof(T));
}
, если вам нужно ограничить типы входных данных только для междунар и DateTime, добавьте условие, как ниже
if (typeof(T) != typeof(int) && typeof(T) != typeof(DateTime))
{
// do something with other types
}
Он отлично работал, преобразуя строку в дату или int в зависимости от того, что было. Спасибо –
Плохая идея. Что значит остановить Т-другой тип? Существует слишком много, что может пойти не так с этим кодом. – jmcilhinney
Если 'T' может быть * только *' int' или 'DateTime', не используют дженерики. Если 'T' могут быть и другими типами, см. [Сериализация] (http://msdn.microsoft.com/en-us/library/7ay27kt9 (v = vs.110) .aspx). –
'return (T) Convert.ChangeType (item, typeof (T));' – Damith
См., Если [Convert.ChangeType (obj, type)] (http://msdn.microsoft.com/en-us/library/ dtb69x08% 28v = vs.110% 29.aspx) подходит для ваших нужд. – slugster