c#mvc使用反射获取泛型类型
目前正在试图找到一种方法来获取泛型类的类型,但一直无法找到这样做的方法。我目前的工作方法如下:c#mvc使用反射获取泛型类型,c#,inheritance,reflection,C#,Inheritance,Reflection,目前正在试图找到一种方法来获取泛型类的类型,但一直无法找到这样做的方法。我目前的工作方法如下: public class CategoryConfiguration : EntityTypeConfiguration<Category> { public CategoryConfiguration() { ToTable("Categories"); Property(c => c.Name
public class CategoryConfiguration : EntityTypeConfiguration<Category>
{
public CategoryConfiguration()
{
ToTable("Categories");
Property(c => c.Name).IsRequired().HasMaxLength(50);
}
}
公共类类别配置:EntityTypeConfiguration
{
公共类别配置()
{
ToTable(“类别”);
属性(c=>c.Name).IsRequired().HasMaxLength(50);
}
}
我想把这个方法改成:
public class CategoryConfiguration : EntityTypeConfiguration<T>
{
public CategoryConfiguration()
{
ToTable(/*get string representation of 'T' here and pluralize*/);
Property(c => c.Name).IsRequired().HasMaxLength(50);
}
}
公共类类别配置:EntityTypeConfiguration
{
公共类别配置()
{
ToTable(/*在这里获取'T'的字符串表示形式并将其复数化*/);
属性(c=>c.Name).IsRequired().HasMaxLength(50);
}
}
我认为您可以:
ToTable(typeOf(T).Name);
关于多重化,请阅读如果您想查看类名,请使用
nameof(T)
。或者,如果您希望看到不同的名称与T
类型绑定,您可以使用属性
,说明
,例如(阅读此处:),并获取其值
例如:
[Description("/*name, which you would like to see*/")]
public class Category
{
/* your class realization */
}
在类别配置中使用
ToTable((typeof(T).GetCustomAttributes(typeof(DescriptionAttribute), true)
.First() as DescriptionAttribute)
.Description);
在C#6.0中,可以使用nameof(T)