当我尝试[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# 项目,并且有一个用 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) 我有以下问题.客户请求以下列格式返回数据的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) 如何将DataContractSurrogate用于我的WCF REST服务(使用WebServiceHostFactory托管)?
我没有看到添加一个的方式,即使我添加自定义IOperationBehavior,该WebServiceHost自动覆盖并忽略它.
我试图创建一个消耗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]
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类的合同.
在多个类中共享公共属性的最佳方法是什么?
例如:
Class A
{
int a;
int b;
int c;
}
Class B
{
int a;
int b;
int d;
}
Run Code Online (Sandbox Code Playgroud)
由于本例中的属性a和b正在重复,那么共享这些属性的最佳方式是什么?
目的是尽可能地重用代码。使用继承来共享数据成员是正确的做法吗?
datacontract ×7
c# ×4
wcf ×4
.net ×1
datamember ×1
java ×1
oop ×1
reusability ×1
service ×1
windows ×1
xml ×1