我有这个Web Api控制器动作:
public Plant<TissueProductionLine> GetPlant(string plant, string range)
{
return _repo.GetPlant(plant, range);
}
解决这个问题我得到了这个:
键入&#39; IGMProdLineDashboard.Models.TissueProductionLineGroup&#39;与数据合同名称&#39; IGMProdLineDashboard.Models&#39;不是预期的。考虑使用DataContractResolver或将任何静态未知的类型添加到已知类型列表中 - 例如,使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中。
好的,没问题,我只是使用Plant
属性装饰我的[KnownType]
对象并指定非原始属性:
[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; }
现在我收到编译时错误:
&#39; IGMProdLineDashboard.Models.ProductionLineGroups&#39;:属性参数不能使用类型参数
重新阅读第一条消息,它想知道派生类型:TissueProductionLineGroup
如果我用这个装饰我的Plant
对象,一切正常:
[KnownType(typeof(TissueProductionLineGroup))]
显然,这里的含义是我的Plant
现在需要知道所有不同类型的生产线,这意味着每当添加新组时我都需要更新Plant
。< / p>
有什么方法吗?
答案 0 :(得分:2)
不幸的是,错误信息根本不会误导您。属性不能使用泛型类型参数。据我所知,没有办法解决这个问题。