【问题标题】:NetStandard 1.4 does not allow decorating class with [DataContract]NetStandard 1.4 不允许使用 [DataContract] 装饰类
【发布时间】:2017-10-12 13:15:56
【问题描述】:

当我尝试在 .NETStandard 1.4 项目中使用 [DataContract] 装饰类时

[DataContract]
[KnownType(typeof(SingleSensorEvent))]
[KnownType(typeof(BatchSensorEvent))]
public abstract class WebItemBase
{
    // details left out
}

我得到以下编译错误

1>WebItemBase.cs(7,6,7,18):错误 CS0653:无法应用属性类 'DataContract' 因为它是抽象的

1>WebItemBase.cs(8,6,8,15): 错误 CS0012:“属性”类型是在程序集中定义的,该程序集是 未参考。您必须添加对程序集“mscorlib”的引用, 版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089'。

有没有办法在 NETStandard 1.4 中使用数据合约?

【问题讨论】:

  • 你做了一些你不应该做的事情来得到这样的错误。不管是什么,最好不要强迫我们猜测,一定要再次撤消它。相反,您需要添加对 Nuget 包 System.Runtime.Serialization v4.3.0 的引用。请注意,您的项目现在可能无法移植到您想到的每个平台,YMMV。
  • @HansPassant 将类移动到新项目并添加您建议的 nuget 包工作。我的时间已经到了,所以我稍后会更深入地挖掘。我想我破坏了项目中的某些东西。非常感谢您的指点!如果你放弃它作为答案,我会接受它。
  • @HansPassant,考虑到我尝试使用 X 型(.NET Standard 中也可以使用的任何普通 .NET 类型),你能告诉我确定哪个 .NET Standard 的可靠方法吗? 最低版本我需要使用它,以及添加引用到哪个nuget包?在处理我自己的类库时,我发现很难理解 .NET 标准的这一部分,但我也很确定我不知道去哪里找。
  • @LasseVKarlsen 使用docs.microsoft.com/en-us/dotnet/api/?view=netstandard-2.0 Nuget 包的名称是该类所在的程序集名称

标签: c# datacontract .net-standard .net-standard-1.4


【解决方案1】:

您需要添加对System.Runtime.Serialization.Primitives NuGet 包的引用才能使用DataContractAttribute。它将在netstandard2.0 中自动提供:

dotnet add package System.Runtime.Serialization.Primitives

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-05
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
相关资源
最近更新 更多