C#泛型/设计模式:我应该使用模板方法吗?
场景: (如果最近有人回答/查看了我的问题,这将有点家喻户晓) 我有3个不同的web服务,它们公开了一组具有公共性的对象。我已经编写了包装类和转换逻辑,使用通用方法在中间对象和服务对象之间进行更改 我有一个Web服务的接口,为了解决这个问题,让它被称为IService。我有3个实现类Service1Impl、Service2Impl和Service3Impl。其中每一个都引用不同的web服务,并使用前面提到的通用方法在适当的对象之间进行转换 它们在运行时通过构造函数注入到我的ServiceWrapper类中(工厂用于创建iSeries的相应实现) e、 g: 将给我一个用Service2Impl实例化的ServiceWrapper (该死的图表会非常有用!) 好的,因此IService的每个实现都有一个为参数而调用的方法。.GetProperties:C#泛型/设计模式:我应该使用模板方法吗?,c#,web-services,design-patterns,generics,C#,Web Services,Design Patterns,Generics,场景: (如果最近有人回答/查看了我的问题,这将有点家喻户晓) 我有3个不同的web服务,它们公开了一组具有公共性的对象。我已经编写了包装类和转换逻辑,使用通用方法在中间对象和服务对象之间进行更改 我有一个Web服务的接口,为了解决这个问题,让它被称为IService。我有3个实现类Service1Impl、Service2Impl和Service3Impl。其中每一个都引用不同的web服务,并使用前面提到的通用方法在适当的对象之间进行转换 它们在运行时通过构造函数注入到我的ServiceWra
public IProperty[] GetProperties(string item, IProperty[] properties)
{
Property[] props = ServiceObjectFactory.CreateProperties<Property>(properties);
Property[] result = _service.GetProperties(item, props);
return ServiceObjectFactory.CreateProperties(result);
}
公共IProperty[]GetProperties(字符串项,IProperty[]properties)
{
Property[]props=ServiceObjectFactory.CreateProperties(属性);
属性[]结果=_service.GetProperties(项目、道具);
返回ServiceObjectFactory.CreateProperties(结果);
}
这看起来有点混乱(我想我要重构名称)
基本上,正在发生的是:
N.B:并非每个实现中的每个方法都是如此。只是大多数方法。我不确定它是否适合您的场景,但通读您的问题会让我想起。我不确定它是否适合您的场景,但通读您的问题会让我想起。我一般认为,如果您想要您的cod要有不同的类型签名,您必须编写三次不同的代码。由于类型不同,它根本不是“同一代码”
您可以将您拥有的内容放入继承的方法中,然后将结果包装到每个子类中。我认为,一般来说,如果您希望您的代码具有不同的类型签名,那么您必须编写三次不同的代码。由于类型不同,它根本不是“同一代码” 您可以将您拥有的内容放入继承的方法中,然后将结果包装到每个子类中
public IProperty[] GetProperties(string item, IProperty[] properties)
{
Property[] props = ServiceObjectFactory.CreateProperties<Property>(properties);
Property[] result = _service.GetProperties(item, props);
return ServiceObjectFactory.CreateProperties(result);
}