gpt4 book ai didi

c# - 传入字典的模型项的类型是...,但该字典需要...

转载 作者:太空狗 更新时间:2023-10-30 01:35:20 25 4
gpt4 key购买 nike

整个错误信息:

The model item passed into the dictionary is of type
'MyClass`2[Implementation1,Implementation2]',
but this dictionary requires a model item of type
'MyClass`2[Interface1,Interface2]'.

在我看来,我有模型声明:

@model MyClass<Interface1, Interface2>

其中 MyClass 是类,Interface1 和 Interface2 是接口(interface)

在我调用的 Controller Action 上:

return View(model);

哪里:model 是类型...

MyClass<Implementation1,Implementation2>

...并且Implementation1 实现Interface1 并且Implementation2 实现Interface2

有没有办法避免这个错误,而不必如下声明我的模型?

@model MyClass<Implementation1, Implementation2>

最佳答案

因为 MyClass不变的你不能这样做,这意味着MyClass<Implementation1, Implementation2>不是 MyClass<Interface1, Interface2> ,因此出现错误。

因为它不是接口(interface)或委托(delegate),所以不能将类声明为协变。虽然您可以创建一个接口(interface)并使用 out keyword 使其协变:

public interface IMyClass<out T1, out T2>
{
...
}

public class MyClass<T1, T2> : IMyClass<T1, T2>
{
...
}

View 中的模型声明:

@model IMyClass<Interface1, Interface2>

关于c# - 传入字典的模型项的类型是...,但该字典需要...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26273476/

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