C# 存储库模式问题和泛型?
我需要C语言中的设计问题库设计模式的帮助。我有一个包含多种产品类型的系统。每个产品都有一个搜索功能。我想设计一个可重用/通用的搜索界面。根据要搜索的产品,搜索条件以及返回的数据将有所不同 搜索功能仅在特定产品类型内搜索。目前搜索是唯一的函数,但将来可能会有其他函数,如GetByID,它们的行为也会因类型而异 我最初的想法是创建一个带有DoSearch:function的产品界面C# 存储库模式问题和泛型?,c#,generics,design-patterns,C#,Generics,Design Patterns,我需要C语言中的设计问题库设计模式的帮助。我有一个包含多种产品类型的系统。每个产品都有一个搜索功能。我想设计一个可重用/通用的搜索界面。根据要搜索的产品,搜索条件以及返回的数据将有所不同 搜索功能仅在特定产品类型内搜索。目前搜索是唯一的函数,但将来可能会有其他函数,如GetByID,它们的行为也会因类型而异 我最初的想法是创建一个带有DoSearch:function的产品界面 public interface IProduct { [return type?] DoSearch([par
public interface IProduct
{
[return type?] DoSearch([paramters?]);
...
}
public class Product1 : IProduct
{
[product1 result] DoSearch([parameters?])
{
//Do searching logic
return [product1 result]
}
}
那我就上商务舱了
public class ProductBusiness
{
IProduct _product;
public ProductBusiness(IProduct product)
{
_product = product
}
public [return type?] DoSearch([parameters])
{
return _product.DoSearch([paramters]);
}
}
我的问题是如何使业务类中的[parameters]和[return type]通用,因为根据产品类型,参数和返回类型会有所不同
使用此选项的客户端代码如下所示:
ProductBusiness productBusiness = new ProductBusiness(new Product1());
[product1 result] = productBusiness.DoSearch[parameters]);
...process result code
我会实现这样的东西。它足够通用,代码的大部分可以在存储库的基类中实现
public interface IRepository<T> where T: IProduct
{
IEnumerable<T> Search(Predicate<T> query)
IEnumerable<T> Search(IEnumerable<Predicate<T>> query>
}
如果您可以添加一个调用存储库的示例,来完成这个示例,那就太好了。。。