Sto cercando di creare una classe generica:T non contiene la definizione per RowKey
public class ClassName<T>
{
public T AccessEntity(string id)
{
return (from e in ServiceContext.CreateQuery<T>(TableName)
where e.RowKey == id // error here!
select e).FirstOrDefault();
}
}
In questo codice che sto errore che ottengo:
T non contiene la definizione per RowKey
ma i parametri che sostituiranno il T in fase di esecuzione hanno la definizione di RowKey. Forse perché il compilatore non sta ottenendo la definizione per RowKey in T in fase di compilazione, è per questo che sto ottenendo questo errore. Qualcuno può dirmi come risolvere questo problema?
Come commento - ho upvoted una delle risposte corrette: il compilatore non interessa quello che T sarà tardi. Si preoccupa di ciò che CONOSCE in fase di compilazione, il che significa che è possibile creare ClassName e Dumbo non ha RowKey -> errore. Aggiungi un vincolo;) –
TomTom
Pro illustra il punto di TomTom: in C# è possibile scrivere un tipo * in fase di esecuzione * e richiamare il tipo generico per il nuovo tipo, purché soddisfi il vincolo, funzionerà. Questo è molto diverso dai modelli C++. –