0

我必须将几个参数传递给 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 = "";
}

编辑:好的。由于某种原因,这些字段被转换为属性。

谢谢你们!

4

3 回答 3

3

下面是一个 Datacontract 的示例:

    [DataContract]
public class Person
{
    [DataMember]
    public int id { get; set; }

    [DataMember]
    public string Name{ get; set; }
}

然后,您可以从 WCF 客户端启动它,或者将其作为方法中的参数传递,或者让它从方法(函数)返回。

于 2012-09-04T10:45:09.380 回答
2

您正在这里寻找 DataContract。您要在 OperationContract 中使用的类必须标记为 DataContract,因为它可以被序列化。

编辑:如果您在 Web 应用程序中添加了对服务的引用,您应该能够在 Reference.cs 文件中找到该类。

于 2012-09-04T10:39:49.970 回答
2

我不确定我是否理解你的问题。看起来您想从 wcf 服务传递一个自定义类(请查看http://msdn.microsoft.com/en-us/library/ms733127.aspx)。我不明白,要如何将某些东西传递给 WCF 服务,除非它消耗另一个服务。

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

于 2012-09-04T10:45:15.463 回答