Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在WCF中返回具有类型为List(of T)的属性的类_Vb.net_Wcf - Fatal编程技术网

Vb.net 在WCF中返回具有类型为List(of T)的属性的类

Vb.net 在WCF中返回具有类型为List(of T)的属性的类,vb.net,wcf,Vb.net,Wcf,我有一个返回公共类字符的服务。该类有一个属性公共属性修饰符作为ModernListOf修饰符。修饰符也是一个数据契约:这里的问题是ModernList。ModernListOf T是我对列表的实现,经过一些修改;它派生自System.Collections.Generic.ListOf T。现在,我知道在WCF中返回派生类时,我们应该用修饰基类,但我不能用它修饰ListOf T。另外,我不能用装饰我的ModernListOf t及其Item属性,因为Item在ListOf t中不可重写。那么,我

我有一个返回公共类字符的服务。该类有一个属性公共属性修饰符作为ModernListOf修饰符。修饰符也是一个数据契约:这里的问题是ModernList。ModernListOf T是我对列表的实现,经过一些修改;它派生自System.Collections.Generic.ListOf T。现在,我知道在WCF中返回派生类时,我们应该用修饰基类,但我不能用它修饰ListOf T。另外,我不能用装饰我的ModernListOf t及其Item属性,因为Item在ListOf t中不可重写。那么,我该怎么办

编辑:我刚想起来我可以制作一个项目属性,将原始属性进行阴影处理,并用装饰,但后来我发现:

无法序列化类型“DKMainService.Infraestrutura.Jogo.equipmento”中的属性“Item”,因为不支持索引属性的序列化


编辑2:有趣的是,我可以完美地创建一个返回ModernListOf T的方法,并且它工作得很好。问题在于返回的类包含ModernListOf T类型的属性。

好吧,WCF一直在欺骗我。WCF告诉我服务器没有提供有意义的回复;这可能是由于契约不匹配、会话过早关闭或内部服务器错误造成的。现在,这并没有告诉我什么。我一直认为问题出在我的ModernList上,因为如果列表为空,那么一切都会正常工作。今天,在为此绞尽脑汁数小时后,不知何故,出于某种原因,WCF决定更改其错误消息,为我提供了一种更清晰的方法,让我知道问题的确切位置:它位于类的一个属性中,该属性是ModernListOf修饰符中某个修饰符的属性类型!请参阅:枚举Enum Knowledges没有为其分配值为0的成员。第一个成员的值为1。然后,有一个类具有Knowledges类型的属性。反过来,该属性在构造中没有初始化,也不可为null。现在您可能已经意识到了这里的问题:枚举是一种值类型,因此不能为它们分配Null;它们的默认值为0。但是,我的枚举没有值为0的成员,因此当它被反序列化时,它会尝试查找值为0的成员,因为它不能为null,并且该值不存在

不要用[DataMember]属性装饰阴影项中的索引属性。如果无法对已知类型进行属性化,则可以在服务上使用ServiceKnownType来定义这些类型。这还不够。我试图用,以及方法来装饰角色类,但没有成功。我现在已经完全重写了我的ModernListOf T,从地上开始构建,而不是继承ListOf T,这样我就可以用KnownType和DataContract来装饰它,但也没有成功。我认为这是泛型的问题。但这很奇怪,因为在Character类中,它被很好地定义为ModernListOf修饰符。此外,正如我在OP中所说,返回ModernList的方法正常工作。