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

C# 具有用户定义类型的泛型方法,c#,generics,user-defined-types,C#,Generics,User Defined Types,我面临的情况是我有一个基类 public class BaseClass { public string SomeVal { get; set; } public BaseClass(string someVal) { this.SomeVal = someVal; } } 以及另外两个使用基类构造函数从基类继承的类 public class ClassA : BaseClass { public ClassA(string someVa

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

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

我想创建一个通用方法,它可以采用ClassA类型或ClassB类型来修改SomeVal值。 我试过这样做

public static void func<T>(T className)
{
    className.SomeVal = "Hello World";
}
但显然编译器不知道SomeVal是什么,我也尝试过公共类ClassA:BaseClass,但仍然不知道SomeVal是什么,此外,代码中ClassA的所有用法不再适用于使用泛型类型“ClassA”时需要1个类型参数的错误

我还考虑过为我所需的功能重载,但对于我的场景来说,这可能会变得单调乏味,因为我有多个从基类继承的类,并且我将创建的方法也不是一个大的方法

您可以将t约束到基类

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

首先,为什么有一个通用方法?您希望参数始终是基类,那么为什么不是它的类型呢?@Servy我以为我需要将ClassA或etc传递给方法,但现在我看到传递基类是有效的。由于新冠病毒,我仍然在训练,并且承认在大约一年的时间里没有做太多的编程工作。但如果我需要泛型,知道如何在将来使用它们也很好:
public static void func<T>(T className)
   where T : BaseClass
public static void func(BaseClass className)