我有一个数据提取, 类似的东西:
public class MyClass<T>() where T : MyBaseClass
{
public List<T> MyList { get; set;}
}
public class SubClassOne : MyBaseClass
{
}
public class SubClassOne : MyBaseClass
{
}
在客户端我得到了一些谎言
MyClass<SubClassOne> FirstClass = new MyClassOfSubClassOneHXlyzk1V()
对于其他子类,我如何在WCF中传输这个类,这样我就可以在没有OfTHXlyzk1V部分的情况下获得MyClass
由于
答案 0 :(得分:1)
答案 1 :(得分:0)
这只是WCF如何为泛型生成类名以防止类名冲突的函数。有关具体详情,请参阅the MSDN documentation。
您有两种方法可以解决这个问题:
1)修改MyClass
以在客户端中指定所需的名称:
[DataContract(Name = "MyClass{0}")]
public class MyClass<T> where T : MyBaseClass
假设返回值为MyClass<SubClassOne>
,则会生成MyClassSubClassOne
的客户名称。
2)将所有共享类(WCF服务和客户端中使用的类)移动到可以包含在每个应用程序中的项目中(主要用于命名空间解析)。
然后在WCF客户端中,右键单击服务引用并选择Configure Service Reference...
并确保选中Reuse types in all referenced assemblies
。
这是一篇非常简短的MSDN how-to。