Ho qualche codice ....Come utilizzare la variabile locale come tipo? Il compilatore ha detto "è una variabile ma è usato come un tipo"
in ambiente run-time non sappiamo che tipo di tipo è la variabile v1! Per questo motivo dovremmo scrivere "if else" statement molte volte!
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;
}
L'ho scritto 4 volte! La differenza è solo nella ShellProperty < anyType>
Così, invece di scrivere questo un sacco di linee utilizzando "se else"
ho deciso di utilizzare utilizzare la reflection per ottenere il tipo di proprietà in fase di esecuzione!
Type t1 = v1.GetType().GetProperty("Value").PropertyType;
dynamic v2 = (v1 as ShellProperty<t1>).Value;
Questo codice può ottenere che tipo di PropertyType è v1 e assegna è ben lo t1 variabile locale.
Ma dopo che il mio compilatore dice che "t1 è una variabile ma è usato come un tipo"
Quindi non mi permette di scrivere t1 all'interno ShellProperty <>
prego di dirmi come risolvere questo problema e come ottenere un codice più compatto di quello che ho?
È necessario creare una nuova classe?
Non è possibile utilizzare i generici in questo modo. I generici sono fortemente tipizzati in fase di compilazione. –
Quindi vuoi dire che non è possibile – IremadzeArchil19910311
non staticamente come questo. ma stai già facendo dinamico. –