2016-12-05 90 views
0

当前试图找到一种方法来获取一般类型的类的类型,并且一直无法找到这样做的方法。我的电流,工作方法如下所示:c#mvc使用反射获得泛型类型

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); 
     } 
    } 

回答

6

我认为你可以这样做:

ToTable(typeOf(T).Name); 

关于多元化,请参阅this

+2

(T) – Ali7091

1

如果您想查看课程名称,请使用nameof(T)。或者,如果您希望看到与T类型绑定的不同名称,则可以使用Attribute,Description(例如,请阅读: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在C#6.0,你可以使用nameof使用

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