调用 REST 服务时如何忽略标有 [IgnoreDataMember] 的属性
How to ignore properties marked with [IgnoreDataMember] when calling REST service
我正在使用 REST Xml 服务。
我拥有执行此操作所需的所有 classes,(由编写该服务的开发人员提供)但最后我必须保存一些对数据库的响应以执行以下任务我正在编写的应用程序。
所以我标记了其中一些 classes 我需要将它们作为部分放入数据库并扩展它们,以便我可以从指定 ID 属性 的 DbEntity
class 继承] 这样我就可以使用 EF 将它们保存到数据库中:
public interface IDbEntity
{
int ID { get; set; }
}
[Serializable]
public class DbEntity : IDbEntity
{
[IgnoreDataMember]
[XmlIgnore]
public int ID { get; set; }
}
我现在面临的问题是,在反序列化服务调用时出现错误
Error in line 1 position 113. 'Element' 'ElementName' from namespace '' is not expected. Expecting element '_x003C_ID_x003E_k__BackingField'
我只是这样打电话:
var response = await client.PostAsXmlAsync<TReq>("Some/API/Call", req);
TResp val = await msg.Content.ReadAsAsync<TResp>(response)
原始 classes 中的所有属性都使用其 DataMember
属性指定了订单,我已明确标记要忽略我的数据库属性,但无济于事。
有什么方法可以让它工作吗? - 即让 DataContractSerializer
实际忽略我在反序列化时标记为忽略的属性?
顺便说一句,这些被忽略的属性在进行调用时也会传递给服务 - IgnoreDataMember 实际上会做任何事情吗?
好像方法是这样的
public interface IDbEntity
{
int ID { get; set; }
}
[Serializable]
[DataContract]
public class DbEntity : IDbEntity
{
[XmlIgnore]
public int ID { get; set; }
}
所以基本上添加了 DataContract
属性但省略了不需要的项目的 DataMember
属性
不知道我是怎么错过第一次的。在这种情况下,它似乎选择加入而不是选择退出。
我正在使用 REST Xml 服务。
我拥有执行此操作所需的所有 classes,(由编写该服务的开发人员提供)但最后我必须保存一些对数据库的响应以执行以下任务我正在编写的应用程序。
所以我标记了其中一些 classes 我需要将它们作为部分放入数据库并扩展它们,以便我可以从指定 ID 属性 的 DbEntity
class 继承] 这样我就可以使用 EF 将它们保存到数据库中:
public interface IDbEntity
{
int ID { get; set; }
}
[Serializable]
public class DbEntity : IDbEntity
{
[IgnoreDataMember]
[XmlIgnore]
public int ID { get; set; }
}
我现在面临的问题是,在反序列化服务调用时出现错误
Error in line 1 position 113. 'Element' 'ElementName' from namespace '' is not expected. Expecting element '_x003C_ID_x003E_k__BackingField'
我只是这样打电话:
var response = await client.PostAsXmlAsync<TReq>("Some/API/Call", req);
TResp val = await msg.Content.ReadAsAsync<TResp>(response)
原始 classes 中的所有属性都使用其 DataMember
属性指定了订单,我已明确标记要忽略我的数据库属性,但无济于事。
有什么方法可以让它工作吗? - 即让 DataContractSerializer
实际忽略我在反序列化时标记为忽略的属性?
顺便说一句,这些被忽略的属性在进行调用时也会传递给服务 - IgnoreDataMember 实际上会做任何事情吗?
好像方法是这样的
public interface IDbEntity
{
int ID { get; set; }
}
[Serializable]
[DataContract]
public class DbEntity : IDbEntity
{
[XmlIgnore]
public int ID { get; set; }
}
所以基本上添加了 DataContract
属性但省略了不需要的项目的 DataMember
属性
不知道我是怎么错过第一次的。在这种情况下,它似乎选择加入而不是选择退出。