标签: datacontract

NetStandard 1.4不允许使用[DataContract]装饰类

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

[DataContract]
[KnownType(typeof(SingleSensorEvent))]
[KnownType(typeof(BatchSensorEvent))]
public abstract class WebItemBase
{
    // details left out
}
Run Code Online (Sandbox Code Playgroud)

我得到以下编译错误

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

1> WebItemBase.cs(8,6,8,15):错误CS0012:类型"属性"在未引用的程序集中定义.您必须添加对程序集'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的引用.

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

c# datacontract .net-standard .net-standard-1.4

2
推荐指数
1
解决办法
1304
查看次数

如何正确反序列化 XML 属性和数组?

我正在做一个 C# 项目,并且有一个用 XML 编码的对象;一个示例是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Entity Type="StartRunTestSetResponse">
    <Fields>
        <Field Name="SuccessStaus">
            <Value>2</Value>
        </Field>
        <Field Name="info">
            <Value></Value>
        </Field>
    </Fields>
</Entity>
Run Code Online (Sandbox Code Playgroud)

我需要属性信息,因为它是对象具有的键值对中必需的。

我的反序列化语法如下所示:

[DataContract(Name="Entity", Namespace="")]
[XmlSerializerFormat]
[KnownType(typeof(SRTSRField))]
[KnownType(typeof(SRTSRValue))]
public class StartRunTestSetResponse
{
    [DataMember(Name="Type"), XmlAttribute("Type")]
    public string type { get; set; }

    [DataMember(Name = "Fields", IsRequired = true), XmlElement("Fields")]
    public List<SRTSRField> fields { get; set; }

    internal StartRunTestSetResponse() { fields = new List<SRTSRField>(); }
}
[DataContract(Name = "Field", Namespace = "")]
[KnownType(typeof(SRTSRValue))]
public class SRTSRField
{
    [DataMember(Name = "Name"), XmlAttribute("Name")] …
Run Code Online (Sandbox Code Playgroud)

c# xml datacontract deserialization

2
推荐指数
1
解决办法
1476
查看次数

自定义datacontract/datamember名称

我有以下问题.客户请求以下列格式返回数据的Web服务:

<status>
 <name1>Some name</name1>
 ...
</status>
Run Code Online (Sandbox Code Playgroud)

但是当发生错误时,他们希望得到以下消息:

<status>
 <error>Error description</error>
</status>
Run Code Online (Sandbox Code Playgroud)

我使用WCF创建了一个Web服务,为了满足要求,我定义了以下服务合同:


    [ServiceContract]
    public interface IPatronStatus
    {
        [OperationContract]
        [ServiceKnownType("GetKnownTypes", typeof(KnownTypesProvider))]
        [WebGet(UriTemplate = "/service/status?user={unilogin}")]
        StatusData GetPatronStatus(string unilogin);
    }

并且还定义了以下基类:


    [DataContract(Name="status")]
    public class StatusData
    {

    }

还有两个缺课:


public class PatronStatusData : StatusData
{
        private string _name;
        [DataMember(Name = "name1", Order = 0)]
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        } 
...
}

和:


public class UniLoginNotFoundError : StatusData 
    {
        public UniLoginNotFoundError()
        { }

        private …
Run Code Online (Sandbox Code Playgroud)

wcf datacontract datamember

1
推荐指数
1
解决办法
9368
查看次数

将DataContractSurrogate与WCF REST一起使用

如何将DataContractSurrogate用于我的WCF REST服务(使用WebServiceHostFactory托管)?

我没有看到添加一个的方式,即使我添加自定义IOperationBehavior,该WebServiceHost自动覆盖并忽略它.

.net wcf datacontract datacontractserializer

1
推荐指数
1
解决办法
1197
查看次数

WCF不暴露字段但使用ExtensionData

我试图创建一个消耗List的WCF

  public class myClass { 
       public int ID { get;set;}
  }
Run Code Online (Sandbox Code Playgroud)

在我的服务中,我写

    [DataContract]
    public class myClass
    {
        public int ID { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

我的客户指出实体

   ServiceReference2.myClass[] sendData = new ServiceReference2.myClass[2];
Run Code Online (Sandbox Code Playgroud)

但是当我将一个新的myClass添加到数组中时

   ServiceReference2.myClass add1= new ServiceReference2.myClass();
Run Code Online (Sandbox Code Playgroud)

实体只公开字段'ExtensionData'而不是字段ID

我究竟做错了什么

wcf datacontract

1
推荐指数
1
解决办法
1216
查看次数

DataContract在WCF客户端服务引用中不可用

我在我的WCF服务中有这个数据合约

[DataContract]
public class Department
{
    [DataMember]
    public List<Section> Sections { get; set; }
}


[DataContract]
public class Section
{
    [DataMember]
    public List<Room> Rooms { get; set; }
}

[DataContract]
public class Room
{
    [DataMember]
    public uint RoomId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我在客户端应用程序中引用我的服务时,我只看到Room类,任何机构都可以解释为什么客户端无法获得Department和Section类的合同.

c# windows service wcf datacontract

1
推荐指数
1
解决办法
8694
查看次数

在多个类中共享公共属性的最佳方式是什么?

在多个类中共享公共属性的最佳方法是什么?

例如:

Class A
{
int a;
int b;
int c;
}

Class B
{
int a;
int b;
int d;
}
Run Code Online (Sandbox Code Playgroud)

由于本例中的属性ab正在重复,那么共享这些属性的最佳方式是什么?

目的是尽可能地重用代码。使用继承来共享数据成员是正确的做法吗?

c# java oop datacontract reusability

-1
推荐指数
1
解决办法
1726
查看次数