c#mvc使用反射获得泛型类型

时间:2016-12-05 17:38:14

标签: c# inheritance reflection

目前正在尝试找到一种获取通用类型类的方法,并且无法找到这样做的方法。我目前的工作方法如下:

public class CategoryConfiguration : EntityTypeConfiguration<Category>
    {
        public CategoryConfiguration()
        {
            ToTable("Categories");
            Property(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);
        }
    }

2 个答案:

答案 0 :(得分:6)

我认为你可以做到:

ToTable(typeOf(T).Name);

关于多元化,请阅读this

答案 1 :(得分:1)

如果您想查看班级名称,请使用nameof(T)。或者,如果您希望查看与T类型绑定的不同名称,则可以使用AttributeDescription作为示例(请在此处阅读:https://msdn.microsoft.com/ru-ru/library/system.componentmodel.descriptionattribute(v=vs.110).aspx),并获取值它的。

例如:

[Description("/*name, which you would like to see*/")]
public class Category
{
    /* your class realization */
}

并在CategoryConfiguration中使用

ToTable((typeof(T).GetCustomAttributes(typeof(DescriptionAttribute), true)
                  .First() as DescriptionAttribute)
                  .Description);