Wcf固有模型
有没有一种方法可以像以下样式一样使用该服务:Wcf固有模型,wcf,Wcf,有没有一种方法可以像以下样式一样使用该服务: [DataContract] Base { [DataMember] public int Id {get;set;} } [DataContract] A : Base { [DataMember] public string Value {get;set;} } [ServiceContract] interface IService { [OperationContract] vo
[DataContract]
Base
{
[DataMember]
public int Id {get;set;}
}
[DataContract]
A : Base
{
[DataMember]
public string Value {get;set;}
}
[ServiceContract]
interface IService
{
[OperationContract]
void SetValue (Base base);
}
你标记了这个WCF,所以我认为你想使用它 您需要使用ChannelFactory连接到端点,然后打开通道 这是行不通的:
new Service ().SetValue (new A ());
你需要做smth。像这样:
new Service ().SetValue (new A ());
使用(var scf=newchannelfactory(,)
{
IService proxy=scf.CreateChannel();
proxy.SetValue(新的(A));
}
这将返回一个实现IService接口的代理对象。您可以调用此对象上的SetValue。除了更改@Flo所指示的调用服务的方式外,还需要进行一些小的更改,以准备数据协定序列化程序来处理继承层次结构 做这件事最简单的方法就是用…来装饰底座
using (var scf = new ChannelFactory< IService >(<Binding>,<EndpointAddress>)
{
IService proxy = scf.CreateChannel();
proxy.SetValue(new (A));
}
是的,但是通过这种knowntype方式;对于我添加的所有新类,我也在base中添加了knowntype。这是真的-但是看看Davy Brion的已知类型提供程序:
[DataContract]
[KnownType(typeof(A))]
Base
{
[DataMember]
public int Id {get;set;}
}
[DataContract]
A : Base
{
[DataMember]
public string Value {get;set;}
}