Estoy tratando de crear una clase genérica:T no contiene la definición para 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();
}
}
En este código que estoy error que conseguía:
T no contiene la definición para rowKey
pero los parámetros que reemplazarán a T en tiempo de ejecución tienen la definición de RowKey. Tal vez porque el compilador no obtiene la definición de RowKey en T en el momento de la compilación, es por eso que recibo este error. ¿Alguien puede decirme cómo resolver este problema?
Como comentario - Me upvoted una de las respuestas correctas: el compilador no le importa lo T será más tarde. Se preocupa por lo que SABE en el momento de la compilación, lo que significa que PUEDE crear ClassName y Dumbo no tiene RowKey -> error. Adda constraint;) –
TomTom
Pro ilustra el punto de TomTom: en C# se puede escribir un tipo * en tiempo de ejecución *, e invocar el tipo genérico para el nuevo tipo - siempre que cumpla con la restricción, funcionará. Esto es muy diferente a las plantillas de C++. –