Dav*_*vid 2 c# generics design-patterns
我需要帮助解决C#中的设计问题(存储库设计模式).我有一个系统有几种类型的"产品".每个产品都有"搜索"功能.我想设计一个可重用/通用的搜索界面.根据搜索的产品,搜索条件和返回的数据将不同.
搜索功能仅在特定产品类型内搜索.目前搜索是唯一的功能,但将来可能会有其他功能,如"GetByID",根据类型也会有不同的行为.
我最初的想法是创建一个带有"DoSearch:function"的"产品"界面
public interface IProduct
{
[return type?] DoSearch([paramters?]);
...
}
public class Product1 : IProduct
{
[product1 result] DoSearch([parameters?])
{
//Do searching logic
return [product1 result]
}
}
Run Code Online (Sandbox Code Playgroud)
然后我会有一个"商业"课程
public class ProductBusiness
{
IProduct _product;
public ProductBusiness(IProduct product)
{
_product = product
}
public [return type?] DoSearch([parameters])
{
return _product.DoSearch([paramters]);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何使业务类中的[参数]和[返回类型]"通用",因为根据产品类型,参数和返回类型会有所不同?
使用它的客户端代码看起来像这样:
ProductBusiness productBusiness = new ProductBusiness(new Product1());
[product1 result] = productBusiness.DoSearch[parameters]);
...process result code
Run Code Online (Sandbox Code Playgroud)
我会实现这样的事情.它足够通用,代码的最大部分可以在存储库的基类中实现.
public interface IRepository<T> where T: IProduct
{
IEnumerable<T> Search(Predicate<T> query)
IEnumerable<T> Search(IEnumerable<Predicate<T>> query>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
285 次 |
| 最近记录: |