gpt4 book ai didi

c# - 使用通用基类作为方法的参数

转载 作者:太空狗 更新时间:2023-10-29 20:53:07 26 4
gpt4 key购买 nike

我有以下类(class)

public class A<T>
{
}
public class B<T> : A<T>
{
}
public class C1 : B<string>
{
}
public class C2 : B<int>
{
}

我想做的是有一个方法可以接受从 B<T> 派生的任何类, 比如 C1C2作为参数。但是声明一个方法为

public void MyMethod(B<T> x)

不起作用,它会产生编译错误

Error CS0246: The type or namespace name `T' could not be found. Are you missing a using directive or an assembly reference? (CS0246)

我被困在这里了。为 B<T> 创建非通用基类不会工作,因为我无法从 A<T> 派生那样。我能想到的唯一(丑陋的)解决方案是定义一个由B<T>“实现”的空虚拟接口(interface)。 .有没有更优雅的方式?

最佳答案

使用泛型方法:

public void MyMethod<T> (B<T> x)

你可以这样调用它:

MyMethod(new B<string>());
MyMethod(new C1());
MyMethod(new C2());

关于c# - 使用通用基类作为方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12494863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com