gpt4 book ai didi

c# - KnownType 属性不能使用类型参数

转载 作者:行者123 更新时间:2023-11-30 12:28:02 24 4
gpt4 key购买 nike

我有这个 Web Api Controller 操作:

public Plant<TissueProductionLine> GetPlant(string plant, string range)
{
return _repo.GetPlant(plant, range);
}

启动它,我明白了:

Type 'IGMProdLineDashboard.Models.TissueProductionLineGroup' with data contract name 'IGMProdLineDashboard.Models' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.

好的,没问题,我将使用 [KnownType] 属性装饰我的 Plant 对象并指定非原始属性:

[KnownType(typeof(ProductionLineGroups<T>))]
public class Plant<T>: IPlant<T> where T : IProductionLine
{
public Plant ()
{
ProductionLineGroups = new ProductionLineGroups<T>();
}
public ProductionLineGroups<T> ProductionLineGroups { get; set; }

现在我得到一个编译时错误:

'IGMProdLineDashboard.Models.ProductionLineGroups': an attribute argument cannot use type parameters

重新阅读第一条消息,它想知道派生类型:TissueProductionLineGroup

如果我用这个装饰我的 Plant 对象,一切正常:

[KnownType(typeof(TissueProductionLineGroup))]

显然这里的含义是我的 Plant 现在需要了解所有不同类型的生产线,这意味着每当有新组时我都需要更新 Plant已添加。

有什么办法解决这个问题吗?

最佳答案

不幸的是,错误消息根本不会误导您。属性不能使用泛型类型参数。据我所知,没有办法解决这个问题。

Jon Skeet 以前发布了关于此事的回答,并表示 C# 团队选择添加此限制是为了使编译器代码更简单,尽管 CLI 没有理由不能表示通用属性。

参见:https://stackoverflow.com/a/294259/2394286

关于c# - KnownType 属性不能使用类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23519982/

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