- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个类需要能够序列化为 SQLServer session 变量并可通过 WCF 服务使用。我声明如下
namespace MyNM
{
[Serializable]
[DataContract(Name = "Foo", Namespace = "http://www.mydomain.co.uk")]
public class Foo : IEntity, ISafeCopy<Foo>
{
[DataMember(Order = 0)]
public virtual Guid Id { get; set; }
[DataMember(Order = 1)]
public virtual string a { get; set; }
DataMember(Order = 2)]
public virtual Bar c { get; set; }
/* ISafeCopy implementation */
}
[Serializable]
[DataContract(Name = "Bar ", Namespace = "http://www.mydomain.co.uk")]
public class Bar : IEntity, ISafeCopy<Bar>
{
#region Implementation of IEntity
DataMember(Order = 0)]
public virtual Guid Id { get; set; }
[DataMember(Order = 1)]
public virtual Baz y { get; set; }
#endregion
/* ISafeCopy implementation*/
}
[Serializable]
[DataContract]
public enum Baz
{
[EnumMember(Value = "one")]
one,
[EnumMember(Value = "two")]
two,
[EnumMember(Value = "three")]
three
}
但是当我尝试调用此服务时,我在跟踪日志中收到以下错误。
"System.Runtime.Serialization.InvalidDataContractException: Type 'BarProxybcb100e8617f40ceaa832fe4bb94533c' cannot be ISerializable and have DataContractAttribute attribute."
如果我去掉 Serializable 属性,WCF 服务可以工作,但是当对象不能序列化到 session 时。如果我从 Bar 类中删除 DataContract 属性,WCF 服务将失败并显示
Type 'BarProxy3bb05a31167f4ba492909ec941a54533' with data contract name 'BarProxy3bb05a31167f4ba492909ec941a54533:http://schemas.datacontract.org/2004/07/' is not expected. Add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer
我已经尝试将 KnownType 属性添加到 foo 类中
[KnownType(typeof(Bar))]
但我仍然得到同样的错误。
谁能帮我解决这个问题?
非常感谢
戴夫
最佳答案
MSDN 上的这个问题可能有帮助:DataContract versus Serializable .
该线程接受的答案:
[DataContract]
and[Serializable]
can be used together.DataContractSerializer understands both of them. If the type is marked with both of them, it will take the projection of
[DataContract]
Here are the docs on data transfer and serialization in WCF which provide a lot of detail on the serializers and known type: Data Transfer and Serialization
关于c# - 为什么我不能在同一个类上使用 WCF DataContract 和 ISerializable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2461466/
是否有可能(如果可以,那么如何)从未实现 [DataContract] 的基类继承并告诉序列化程序忽略它? 有点像 //Non-accessible, non-[DataContract] class
问题是我没有得到我想要的 XML 结构。我的代码如下: [DataContract] public class Persons { [DataMember] public List P
下面是我的 WCF DataContract 基类 [DataContract] public class BaseClass { //some datamember
WCF 新手。 DataContact 类可以继承自 Interface 吗? 例如: [DataContract(Namespace = ...........)] public class Ves
我有一个令人沮丧的问题,我一直在努力克服但似乎无法弄清楚。 我有通过 WCF 中的 SOAP 和 REST 端点公开的服务。为了避免重复的对象代码,我想在两个服务之间重用契约(Contract)对象。
好吧,这里什么都没有。在阅读了服务版本控制和数据契约(Contract)版本控制的最佳实践 (http://msdn.microsoft.com/en-us/library/ms733832.aspx
我想知道通过 WCF 服务公开哪些对象有什么意义 - 我应该将 WCF 序列化规范添加到我的业务实体,还是应该实现一个转换器将我的业务实体映射到我想通过我的 WCF 公开的 DataContracts
[DataMember] public int? NumberOfPages; //////////// Is this supported???? [DataMember]
我有一个 ServiceContract,它有一个具有以下方法签名的 OperationContract:Manipulate(int fileid, param object[] Operation
我有一个类(带有属性和一些方法) [DataContract] public partial class AbstractApplicationCallDto { [IgnoreDataMem
我想使用 AJAX 调用来使用 WCF REST 服务。 假设我有以下内容 Person是一个用户定义的类: [ServiceContract] public interface IPerson {
我一直在阅读有关在我的 Silverlight 项目中有一个 [DataContract] 指定类的信息。我知道它们被序列化并传递给客户端以传递信息。 除此之外,您似乎可以在某些情况下向这些类添加代码
基本上我有一个 DataContract,其中包含一个 Dictionary: [DataContract] public class MyDictionary : IDictionary {
我上过这样的课: [DataContract(Namespace = "blah")] public class Item { [DataMember(Order = 0)] publ
我知道当你创建一个服务时你可以创建一个通用的 DataContract: [DataContract(Name = "Get{0}Request") public sealed class GetIt
我正在尝试将类 B 序列化为 ita 基类 A 的实例。 DataContractSerializer 不允许我这样做。 序列化失败的例子如下: class Program { [DataCo
我的数据最好被描述为“洋葱状”,因为每个外层都建立在它下面的一层之上。下面您将看到一个大大简化的版本(我的版本更深几层,但在每一层都表现出相同的行为)。 [CollectionDataContract
我正在设置 WCF 界面。我的数据契约(Contract)如下所示: [DataContract(Namespace = "wcf")] [KnownType(typeof(TypeFromLibra
我的数据最好被描述为“洋葱状”,因为每个外层都建立在它下面的一层之上。下面您将看到一个大大简化的版本(我的版本更深几层,但在每一层都表现出相同的行为)。 [CollectionDataContract
我不知道使用的是什么序列化程序,但在使用 datacontract 属性的 Name 属性时,我在序列化过程中看到了一些不一致的行为。 这是我正在做的一个例子: [XmlRoot(ElementNam
我是一名优秀的程序员,十分优秀!