我必须将几个参数传递给WCF服务,因此我创建了一个包含相应字段的类,并认为我将该类的实例传递给该服务。但是该服务认为该类与它具有的不同。
所以我想在服务中创建该类,但我在调用程序中找到了
Class1 c = new Class1 ();//of the class in the service
FieldInfo[] f = c.GetType().GetFields();
什么都不返回。
所以我尝试创建一个界面,但该服务仍然需要来自该服务的其类。
那么我如何传递一个自定义类实例,并且仍然能够像调用任何其他类一样在调用者中使用该类?
编辑:
这就是我正在做的事情:我在VWD(-Visual Studio for web)中创建了一个网站(只是简单的模板)。并添加了WCF服务和带
的文件[DataContract]
[Serializable()]
public class Class1
{
[DataMember]
public string s = "";
}
编辑:好的。由于某种原因,字段将转换为属性。
谢谢大家!
答案 0 :(得分:3)
以下是Datacontract的示例:
[DataContract]
public class Person
{
[DataMember]
public int id { get; set; }
[DataMember]
public string Name{ get; set; }
}
然后,您可以从WCF客户端启动它,或者将其作为方法中的参数传递,或者让它从方法(函数)返回。
答案 1 :(得分:2)
您正在寻找DataContract。要在OperationContract中使用的类必须标记为DataContract,因为它可以序列化。
编辑:如果您在Web应用程序中添加了对服务的引用,那么您应该能够在Reference.cs文件中找到该类。
答案 2 :(得分:2)
我不确定我理解你的问题。看起来你想传递一个自定义类FROM wcf服务(请看看http://msdn.microsoft.com/en-us/library/ms733127.aspx)。我不知道,如果想要传递一些东西到WCF服务,除非它消耗其他服务。
编辑: 您不能使用客户端的类作为服务方法的参数。