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

c#

我面临的场景是我有一个基类

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

以及使用 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,而且我要创建的方法也不是什么大方法

回答

你可以约束TBaseClass

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

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

public static void func(BaseClass className)


以上是具有用户定义类型的泛型方法的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>