Такое приведение на самом деле ничего не сделает, потому что вы присваиваете переменную с более свободной типизацией. Ваш лучший подход зависит от того, что вы хотите сделать с типом значения после его «приведения».
Варианты:
- Отражение
- C # 4.0
dynamic
печатать.
- Простой
switch
или if .. else
в зависимости от типа переменной.
Редактировать: использование универсального класса на самом деле не решит вашу проблему, если вы ничего не знаете о типе во время компиляции, но ваш пример не иллюстрирует фактическое использование вашего класса, поэтому может случиться так, что Я неправильно понимаю ваши намерения. Нечто подобное может быть тем, что вы ищете:
class MyClass<T> where T: struct
{
T obj;
public T Obj
{
get { return obj; }
set { obj = value; }
}
}
MyClass<int> test = new MyClass<int>();
test.Obj = 1;
Фактическое определение типа теперь находится за пределами вашего класса как параметр общего типа. Строго говоря, тип все еще статичен в том смысле, что он известен во время компиляции.