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

Generic Methods with user defined types

我面临的情况是我有一个基地class

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

和另外两个 class 使用 BaseClass

的构造函数从 BaseClass 继承的类
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 但仍然在同一点上不知道 SomeVal 是什么,此外, ClassA 在代码中不再使用错误 Using the generic type 'ClassA<T>' requires 1 type arguments

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

您可以将 T 限制为 BaseClass

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

如果你不怎么使用 T,我会考虑让 func 不是通用的,只需要一个 BaseClass

public static void func(BaseClass className)