gpt4 book ai didi

c# - 使用 DataContract Name 属性重命名 WCF 泛型类

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:22 26 4
gpt4 key购买 nike

我的 WCF 界面如下所示:

[ServiceContract]
public interface IService
{
[OperationContract]
Foo<String>[] Test();
}

Foo<T>类看起来像这样:

[DataContract(Name = "FooOf{0}")]
public class Foo<T>
{
public T Value { get; set; }
}

我发布了 WCF 服务并将服务引用添加到我的客户端代码,然后我像这样使用此方法:

var client = new ServiceClient(new BasicHttpBinding(), new EndpointAddress(@"http://myServer:port/Service.svc"));
FooOfString[] result = client.Test();

但是,我不能访问生成类的属性,例如,我不能这样做:

var value = result[0].Value; // cannot access property, does not compile

我可以通过删除 [DataContract(Name = "FooOf{0}")] 来做完全相同的事情我的一部分 Foo<T>类,我可以访问属性,问题是生成的类的名称更改为 FooOfStringCHtiIp13这看起来很难看,我正在尝试将其重命名为更具可读性的名称。但是,此操作现在有效:

FooOfStringCHtiIp13[] result = client.Test();
var value = result[0].Value; // can access, compiles

感觉有些东西没有序列化,我没有正确使用它。知道如何正确实现这一点吗?

最佳答案

解决了我的问题,问题出在我的Value Foo<T>的属性(property)类,我必须添加 DataMemberAttribute到我的属性(property):

[DataContract(Name = "FooOf{0}")]
public class Foo<T>
{
[DataMemberAttribute(Name = "Value")]
public T Value { get; set; }
}

关于c# - 使用 DataContract Name 属性重命名 WCF 泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42273214/

26 4 0
文章推荐: php - 如何通过不验证 ssl 在没有 openssl 的情况下通过 file_get_contents() 通过 HTTPS 发出请求?
文章推荐: c# - 返回 List 时 Asp.net Webservice 不工作