如何将自定义类传递给WCF服务?

时间:2012-09-04 10:36:12

标签: c# asp.net wcf

我必须将几个参数传递给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 = "";
}
编辑:好的。由于某种原因,字段将转换为属性。

谢谢大家!

3 个答案:

答案 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服务,除非它消耗其他服务。

编辑: 您不能使用客户端的类作为服务方法的参数。