[英]Generic Methods with user defined types
我面临的场景是我有一个基础 class
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.