我正在使用WCF
构建分布式(客户端 - 服务器都是.NET).NET-Application。正如您在下面的代码中看到的,我想在我的一个DataContrac中使用System.Type来发送参数类型。但是,当我这样做时,我总是得到一个例外。所有其他东西都在工作,这意味着当我删除System.Type属性时它运行良好。
[DataContract]
public class PluginParametersItemDto
{
[DataMember]
public String Name { get; set; }
[DataMember]
public Type Type { get; set; }
[DataMember]
public Object Value { get; set; }
public PluginParametersItemDto(String name, Type type, Object value)
{
this.Name = name;
this.Type = type;
this.Value = value;
}
}
任何人都知道如何将泛型类型定义传递给我的客户端?或者甚至可能吗?
答案 0 :(得分:0)
你的方法从根本上被打破了。
您无法发送类型 - 您需要发送它所在的程序集(这是一个字节数组)。类型在内存表示中 - 它们可能依赖于其他类型。
现在,如果你在另一边有程序集 - 不要发送类型(就像你那样),而是发送完整的类型名称,那么你可以实例化它。但是,如果我读得正确,这是一个插件设置,那么我认为你有一个问题,你实际上没有接收端的类型 - 然后事情真的有点复杂。
答案 1 :(得分:-1)
这是因为使用DataContractSerializer
的默认序列化。尝试切换客户端和服务器以使用嵌入.NET类型信息的NetDataContractSerializer。在这种情况下,您的服务将与标准Web服务不兼容,但只要您确定双方都是用.NET编写的,您就可以了。