¿Cómo usar la variable local como tipo? El compilador dice "es una variable pero se usa como un tipo"
En tiempo de ejecución, no sé qué tipo de variablev1
es. Por esta razón, escribí muchosif else
declaraciones:
if (v1 is ShellProperty<int?>)
{
v2 = (v1 as ShellProperty<int?>).Value;
}
else if (v1 is ShellProperty<uint?>)
{
v2 = (v1 as ShellProperty<uint?>).Value;
}
else if (v1 is ShellProperty<string>)
{
v2 = (v1 as ShellProperty<string>).Value;
}
else if (v1 is ShellProperty<object>)
{
v2 = (v1 as ShellProperty<object>).Value;
}
La única diferencia está enShellProperty<AnyType>
.
Entonces, en lugar de escribir esto con muchoif else
declaraciones, decidí usar la reflexión para obtener el tipo de propiedad en tiempo de ejecución:
Type t1 = v1.GetType().GetProperty("Value").PropertyType;
dynamic v2 = (v1 as ShellProperty<t1>).Value;
Este código obtiene elPropertyType
dev1
y lo asigna a la variable localt1
, pero después de eso, mi compilador dice que:
t1 es una variable pero se usa como un tipo
Entonces no me permite escribirt1
dentroShellProperty<>
.
Por favor, dígame cómo resolver este problema y cómo obtener un código más compacto que el que tengo. ¿Necesito crear una nueva clase?