我希望消费者应用程序将一些数据结构发送到wcf服务,然后该服务将数据传递给业务模型对象。
我希望避免将服务数据对象的每个属性手动复制到新的业务对象。
例如:
[DataContract]
public class MyServiceData
{
[DataMember]
public Property1() { get; set;}
[DataMember]
public Property2() { get; set;}
[DataMember]
public Property3() { get; set;}
}
public class MyWcfService : IMyWcfService
{
public void Operation1(MyServiceData data)
{
var obj = new DomainObject();
obj.Property1 = data.Property1;
obj.Property2 = data.Property2;
obj.Property3 = data.Property3;
obj.DoSomething();
}
}
我可以将MyServiceData类放在业务对象层中,但我认为在业务模型对象中使用这些wcf服务属性并不是一件好事。
我可以使用任何设计模式来实现这一目标吗?
答案 0 :(得分:0)
此问题的最佳解决方案是使用这样的适配器模式。 http://en.wikipedia.org/wiki/Adapter_pattern
以下是一个示例实现:
public class MyDomainObject
{
public string MyProperty { get; set; }
}
[DataContract]
public class MyDomainObjectWcfAdapter
{
private readonly MyDomainObject _object;
public MyDomainObjectWcfAdapter(MyDomainObject obj)
{
this._object = obj;
}
[DataMember]
public string MyProperty
{
get { return this._object.MyProperty; }
set { this._object.MyProperty = value; }
}
public MyDomainObject GetObject()
{
return this._object;
}
}