我正在开发一个wcf webservice。此服务使用我添加的第三方Web服务作为服务参考。 现在我想将这个proxyclient的一些属性发布给使用我的wcfservice的客户端,而不是定义自己的类并进行映射。
自动生成的代码作为分部类完成。
public partial class Person : object,
System.ComponentModel.INotifyPropertyChanged
{
public string FirstName;
public string LastName;
...
}
我尝试使用MetadataType-Attribute覆盖这些属性,并将[DataMember] -Attribute添加到属性中。但这种接缝仅适用于EF。
[DataContract]
[MetadataType(typeof(PersonMetaData))]
public partial class Person
{
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
}
public class PersonMetaData
{
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
}
尝试实现界面没有帮助,这些属性在客户端上是不可见的。
[DataContract]
public partial class Person : IPerson
{}
public interface IPerson
{
[DataMember]
string FirstName { get; set; }
[DataMember]
string LastName { get; set; }
}
有什么想法吗?
圭
答案 0 :(得分:0)
在我的服务上,XmlSerializer无法序列化PropertyChanged-event的自动生成的类原因。
如果我使用DataContractSerializer并使用[DataContract]装饰我自动生成的类,我无法通过[DataMember]继承来修饰属性,因为该属性不可继承。
所以我通过包装器属性扩展了这个部分类。
[DataContract]
public partial class Person
{
[DataMember]
public string FirstNameWrapper
{
get
{
return this.FirstName;
}
set
{
this.FirstName = value;
}
}
}