C# 关于类属性类型的WCF
好的,我正在构建我的WCF服务。我的代理无法为具有ListViewItem等类型的类生成代码,甚至无法为我已经定义的类对象生成代码 下面的两个例子是我试图通过的课程 示例#1C# 关于类属性类型的WCF,c#,wcf,service,datacontract,datamember,C#,Wcf,Service,Datacontract,Datamember,好的,我正在构建我的WCF服务。我的代理无法为具有ListViewItem等类型的类生成代码,甚至无法为我已经定义的类对象生成代码 下面的两个例子是我试图通过的课程 示例#1 [DataContract] public class InvoiceCharges { #region Property... private int _invoiceChargeID; private ListViewItem _listViewItem; [DataMember]
[DataContract]
public class InvoiceCharges {
#region Property...
private int _invoiceChargeID;
private ListViewItem _listViewItem;
[DataMember]
public int InvoiceChargeID {
get { return _invoiceChargeID; }
set { _invoiceChargeID = value; }
}
[DataMember]
public ListViewItem ListViewItem {
get { return _listViewItem; }
set { _listViewItem = value; }
}
#endregion
示例#2
[DataContract]
public class Users {
#region Properties...
private int _userID;
private Divisions _Division = new Divisions();
[DataMember]
public int UserID {
get { return _userID; }
set { _userID = value; }
}
[DataMember]
public Divisions Division {
get { return _Division; }
set { _Division = value; }
}
在第二个例子中,我很困惑为什么它很难通过它已经看到的我的师级。当然WCF可以传递您自己的自定义对象??非常感谢您的帮助,我知道在其他平台上,为了序列化您自己的自定义对象,您必须对您的类执行一些特殊的操作。我不确定WCF是否自动处理了这个问题
编辑
在此方面的任何其他帮助仍将不胜感激
我还尝试将以下内容添加到InvoiceCharges类中,但仍然无法看到正确生成的代理
[KnownType(typeof(ListViewItem))]
此外,这也是代理的行为。我正在使用添加服务引用来执行此操作
看看它是如何生成几个“发票费用”的,这都是因为ListViewItem。我可以将DataMember属性从中删除,它很好。ListViewItem是一个UI概念,在您的业务或服务代码中没有任何用途。重新考虑“数据”(模型),而不是用户所看到的,并重新调整类
您的问题是无法序列化。除非您想重写UI位以使其更易于序列化,否则重新考虑模型是您的最佳选择。Divisions类是否也具有DataContract属性?是的,奇怪的是,当我从自定义对象(例如ListViewItem属性和Division属性)中删除[DataMember]属性时它在这方面遇到了麻烦。该类在客户端成功地生成了一个代理。我猜ListViewItem没有标记DataContract属性,因此这可能是问题所在。因为您没有发布代码,所以无法确定是否要在类的属性上放置DataContract?属性“DataContract”对此声明类型无效。它仅对“class、struct、enum”声明有效。值得一提的是,您不应该通过WCF发送ListViewItem实例(假设这些是框架中内置的LVI)。它们是一个UI构造。只需发送数据并在另一端构建新的LVI实例。