Así que si hay una enum
propiedad en una llamada class
Bar
, ¿por qué no puedo acceder a la propiedad o cualquier enum
static
propiedad de type
<T>
en esta situación. Estoy implícitamente declarando que <T>
es de type
Bar
. Solo quería saber si es simplemente una limitación de Generics o el enum
type
.contraer una enumeración o Propiedad estática de Genérico Tipo de referencia <T>
public class Foo<T> where T : Bar
{
public Foo()
{
// This obviously works
var car = Bar.Cars.Honda;
var name = Bar.Name;
// Why can't I do this ?
var car2 = T.Cars.Toyota;
var name2 = T.Name;
}
}
public class Bar
{
public static string Name { get; set; }
public enum Cars
{
Honda,
Toyota
};
}
ACTUALIZADO
En respuesta de @Frederik Gheysels, se menciona que si tengo un class
que se deriva simplemente de Bar
que no iba a tener acceso a la enum
o cualquier static
de el base
. Eso no es correcto, esto compila y funciona.
public class Foo : Bar
{
public Foo()
{
// This all works
var address = this.Address;
var car = Foo.Cars.Honda;
var name = Foo.Name;
}
}
public class Bar
{
public static string Name { get; set; }
public string Address { get; set; }
public enum Cars
{
Honda,
Toyota
}
}
¿Por qué querrías * poder * poder hacer eso? ¿Cuál es el caso de uso aquí? –
Similar a http://stackoverflow.com/questions/196661/calling-a-static-method-on-a-generic-type-parameter – AlG
¿Está tratando de lograr algo similar a [esto] (http: // stackoverflow .com/questions/4704201/what-is-the-best-way-to-override-enums)? –