具有用户定义类型的泛型方法
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,而且我要创建的方法也不是什么大方法
回答
你可以约束T到BaseClass
public static void func<T>(T className)
where T : BaseClass
如果你不怎么做T,我会考虑func不通用,只需要一个BaseClass
public static void func(BaseClass className)