通用扩展方法的正确语法

本文关键字:语法 方法 扩展 | 更新日期: 2023-09-27 18:21:56

我想这样做:

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

编译器不喜欢<T>在那里,正确的语法是什么?


更多上下文,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使用轻量级约定来处理这一问题,但我不能使用产品的测试版位。

通用扩展方法的正确语法

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

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