C# WCF通过等级,带<;T>;

C# WCF通过等级,带<;T>;,c#,.net,wcf,C#,.net,Wcf,我有一份数据合同, 比如: public class MyClass<T>() where T : MyBaseClass { public List<T> MyList { get; set;} } public class SubClassOne : MyBaseClass { } public class SubClassOne : MyBaseClass { } 公共类MyClass(),其中T:MyBaseClass { 公共列表MyList{ge

我有一份数据合同, 比如:

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

public class SubClassOne : MyBaseClass
{
}
public class SubClassOne : MyBaseClass
{
}
公共类MyClass(),其中T:MyBaseClass
{
公共列表MyList{get;set;}
}
公共类子类:MyBaseClass
{
}
公共类子类:MyBaseClass
{
}
在客户方面,我得到了一些利克

MyClass<SubClassOne> FirstClass = new MyClassOfSubClassOneHXlyzk1V()
MyClass FirstClass=新的MyClassOfSubClassOneHXlyzk1V()
与其他子类相同,如何在WCF中转换该类,以便在没有Othxlyzk1v部分的情况下获得MyClass


谢谢

尝试使用[KnownType]来声明要用于的类型


滚动至-“使用开放泛型方法的已知类型”

尝试使用[KnownType]声明要用于


滚动至-“使用开放泛型方法的已知类型”

这只是WCF如何为泛型生成类名以防止类名冲突的一个函数。有关具体详细信息,请参阅

解决此问题有两个选项:

1) 修改
MyClass
以指定要在客户端中使用的名称:

[DataContract(Name = "MyClass{0}")]
public class MyClass<T> where T : MyBaseClass
[DataContract(Name=“MyClass{0}”)]
公共类MyClass,其中T:MyBaseClass
假设返回值为
MyClass
,这将生成客户机名称
MyClassSubClassOne

2) 将所有共享类(WCF服务和客户端中使用的类)移动到可包含在每个应用程序中的项目中(主要用于名称空间解析)

然后在WCF客户端中,右键单击服务引用并选择
Configure service reference…
,确保选中所有引用程序集中的
重用类型


这是一个非常简短的说明。

这只是WCF如何为泛型生成类名以防止类名冲突的一个函数。有关具体详细信息,请参阅

解决此问题有两个选项:

1) 修改
MyClass
以指定要在客户端中使用的名称:

[DataContract(Name = "MyClass{0}")]
public class MyClass<T> where T : MyBaseClass
[DataContract(Name=“MyClass{0}”)]
公共类MyClass,其中T:MyBaseClass
假设返回值为
MyClass
,这将生成客户机名称
MyClassSubClassOne

2) 将所有共享类(WCF服务和客户端中使用的类)移动到可包含在每个应用程序中的项目中(主要用于名称空间解析)

然后在WCF客户端中,右键单击服务引用并选择
Configure service reference…
,确保选中所有引用程序集中的
重用类型

这里是一个非常简短的介绍