与<T>

2012-01-04 63 views
1

WCF传球类我有一个datacontract, 是这样的:与<T>

public class MyClass<T>() where T : MyBaseClass 
{ 
    public List<T> MyList { get; set;} 
} 

public class SubClassOne : MyBaseClass 
{ 
} 
public class SubClassOne : MyBaseClass 
{ 
} 

在客户端上我得到的东西liek

MyClass<SubClassOne> FirstClass = new MyClassOfSubClassOneHXlyzk1V() 

同为其他子类,我怎么能transffer这个类在WCF所以我将能够得到MyClass没有OfTHXlyzk1V部分

谢谢

回答

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对此。

+0

谢谢,我会检查一下 – ibm123 2012-01-05 06:58:46