通用扩展方法的正确语法

时间:2013-07-10 19:43:14

标签: c# generics entity-framework-5 extension-methods

我想这样做:

public static void SetStringsToBeNonUnicode(this EntityTypeConfiguration<T> config) 
{

}

编译器不喜欢&lt; T&gt;在那里,这是什么正确的语法?


更多上下文,EntityTypeConfiguration是一个EntityFramework类,定义为

public class EntityTypeConfiguration<TEntityType> : StructuralTypeConfiguration<TEntityType> where TEntityType : class

这是导致我头痛的原因。

我真正想要的是在配置dbcontext类时能够做这样的事情:

public class ReceiptEntityConfiguration: EntityTypeConfiguration<ReceiptEntity>
{
    public ReceiptEntityConfiguration()
    {
        ToTable("vReceipt");
        HasKey(r => r.ReceiptId);
        this.SetStringsToBeNonUnicode();  //I want to make all string fields for this entity type (ReceiptEntity in this case) to be treated as not unicode.
        ...etc etc
    }
}

EF6.0使用轻量级约定处理此问题,但我不能将beta位用于prod。

1 个答案:

答案 0 :(得分:5)

您需要将T指定为该函数的类型参数。你这样做:

public static void SetStringsToBeNonUnicode<T>(this EntityTypeConfiguration<T> config) where T : class
{

}