我想制作一个接受 Type 作为参数的类,与此同时,我想制作一个也是泛型类型的委托(delegate)。示例代码如下。我认为它应该工作,OnGo 委托(delegate)从类声明中接收 Type 作为 TypeAsParam。但是,注释行是错误的。有人知道如何解决这个问题吗?谢谢大家:)
public delegate void OnGo<TypeInDel>(TypeInDel obj);
public class MyClass<TypeAsParam>
{
public OnGo<TypeAsParam> MyDelegate;
public void Msg<TypeAsParam>()
{
TypeAsParam msg;
MyDelegate(msg); //here is wrong in VS editor, says cannot cast msg to TypeAsParam(not TypeInDel)
}
}
最佳答案
问题出在您的 Msg 方法上。您在其中定义了新的 TypeParameter,因此编译器无法确定 TypeAsParam
来自类(class)和TypeAsParam
从方法是一样的。您需要删除 <TypeAsParam>
从消息或做一些限制。
此外,您需要像这样初始化您的消息:
var msg = default(TypeAsParam)
关于C#要在类中使用泛型委托(delegate)也有泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28473679/