用派生泛型类型的派生类实例调用方法

马德斯比克

好,我上课了

class B<T> : A<T>
class L : K

和方法

void Method(A<K> a) {...}

我想做的是这个

var b = new B<L>();
Method(b); //error

但是b不可能是正确的类型。确实不可能进行此演员表

A<K> t = new A<L>(); //error

我真的很想不必更改Method的内部。我对B和/或L进行更改没有问题。是否可以选择某种解决方法?我猜方法应该有可能在b上执行其所有方法调用等,因为B派生自A,L派生自K?

布伦丹·希尔

假设您使用的是C#4.0以上版本,则需要将A的类型参数声明为协变的:

public class A<out T> where T : K
{
}

这应该允许您将变量B传递给参数A

更多信息:

了解C#中的协变和逆变接口

显然,在OOP中,您可以将派生类型传递给声明为基本类型的参数(这就是重点)。协方差允许同样的事情-但是对于类型参数,这是您在这种情况下需要的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何定义一个泛型方法来返回派生类类型的实例?

来自分类Dev

通过派生类型使用反射调用泛型基类上的方法

来自分类Dev

用派生类调用重载方法

来自分类Dev

用派生类调用重载方法

来自分类Dev

如何在派生类型中使用泛型方法

来自分类Dev

如何在派生类型中使用泛型方法

来自分类Dev

从特定的工厂方法参数值派生类的泛型类型

来自分类Dev

在派生类中调用泛型函数的更好方法

来自分类Dev

派生类型和泛型

来自分类Dev

从基类实例调用派生类方法

来自分类Dev

从基类实例调用派生类方法

来自分类Dev

在C#中的基类中使用泛型:如何确保基类中的方法返回派生类的类型?

来自分类Dev

在基类内部使用派生类实例调用带有派生类数据的基类方法

来自分类Dev

用派生类调用Entity的函数

来自分类Dev

无法将基本实例的对象转换为派生类型(泛型用法)

来自分类Dev

从类型参数派生类泛型的替代解决方案

来自分类Dev

通过派生类型调用的静态方法

来自分类Dev

派生类Private方法被调用

来自分类Dev

在派生类中调用重写的方法

来自分类Dev

调用派生类的非继承方法

来自分类Dev

如何调用派生类方法?

来自分类Dev

在派生类中调用重写的方法

来自分类Dev

调用派生类的非继承方法

来自分类Dev

派生类调用父方法

来自分类Dev

从泛型类派生

来自分类Dev

是否可以从派生类型引用定义泛型?

来自分类Dev

如何从虚拟函数返回泛型派生类?

来自分类Dev

如何在C#中使用派生类型重写泛型方法

来自分类Dev

C# - 接口泛型方法约束以匹配派生类型