代码之家  ›  专栏  ›  技术社区  ›  WhatsThePoint SO_fix_the_vote_sorting_bug

具有用户定义类型的泛型方法

  •  0
  • WhatsThePoint SO_fix_the_vote_sorting_bug  · 技术社区  · 3 年前

    我面临的情况是我有一个基类

    public class BaseClass
    {
        public string SomeVal { get; set; }
        public BaseClass(string someVal)
        {
            this.SomeVal = someVal;
        }
    }
    

    以及另外两个使用基类的构造函数从基类继承的类

    public class ClassA : BaseClass
    {
        public ClassA(string someVal) : base (someVal)
            {
            }
    }
    

    public class ClassB : BaseClass
    {
        public ClassB(string someVal) : base (someVal)
            {
            }
    }
    

    ClassA 类型或 ClassB SomeVal 价值观。 我试过这么做

    public static void func<T>(T className)
    {
        className.SomeVal = "Hello World";
    }
    

    但显然编译器不知道SomeVal是什么,我也试过了 public class ClassA<T> : BaseClass 但仍然在同一点上,它不知道什么 某地 甲级 在代码中不再处理错误 Using the generic type 'ClassA<T>' requires 1 type arguments

    我也考虑过为我需要的功能重载,但是对于我的场景来说,这可能会变得很乏味,因为我有多个继承自的类 BaseClass ,我要创建的方法也不是很大

    1 回复  |  直到 3 年前
        1
  •  6
  •   Daniel A. White    3 年前

    可以约束 T BaseClass

    public static void func<T>(T className)
       where T : BaseClass
    

    ,我会考虑 func 基类

    public static void func(BaseClass className)