C#要在类中使用泛型委托(delegate)也有泛型

标签 c# generics delegates

我想制作一个接受 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/

相关文章:

Java 泛型 : Type cast issue (ClassCastException)

java - 获取通用类

generics - 如何从函数返回具有泛型关联类型的迭代器?

ios - PickerView 委托(delegate)导致崩溃

c# - 委托(delegate)实例分配与方法组相比

c# - 如何使用 Windows 性能分析器查看 EventSource 创建的 ETW 事件?

c# - 如何阻止 ASP.NET Core 发布本地化的 Microsoft.CodeAnalysis.*.resources.dll 文件?

c# - 检查对象的类型是否来自特定的命名空间

c# - 有什么方法可以让小网页在 iPhone 上显示为全尺寸?

C# 从作为 Func<> 的委托(delegate)获取类型参数