具有用户定义类型的通用方法
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)
我面临的情况是我有一个基地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)