gpt4 book ai didi

c# - 如何设计通用搜索条件?

转载 作者:太空狗 更新时间:2023-10-30 00:16:03 27 4
gpt4 key购买 nike

假设我们有一个应用程序(在服务器上)有一组资源:这些资源通过字典按名称索引,即Dictionary<string, Resource> resources .

客户端向服务器(使用 WCF)发送一个或多个资源的名称(例如,它发送 List<string>)。在服务器上可能只有客户端请求的资源的一个子集,因此当服务器收到此列表时,它会发回一个仅包含找到的资源名称的列表。

我想概括客户端发送到服务器的搜索条件,以便将来可以轻松地使用更复杂的搜索条件扩展应用程序(客户端和服务器端)。为了实现这个目标,我想创建 ISearchCriteria接口(interface),因此客户端应发送一个实现此接口(interface)的类的对象。

public interface ISearchCriteria
{
// the names of the resources which match with the search criteria
ICollection<string> GetCompliantResources();
}

但是在我看来这个解决方案不是很正确,因为 GetComplianceResources方法应该与服务器上的字典交互,但客户端应该不知道关于这个字典的任何信息……我可能会使用策略模式,将每个具体策略与特定搜索条件相关联。这样可以将控制逻辑与数据(即搜索条件)分开。

更新(策略模式和 DTO)

// Both on the server and on the client
public interface ISearchCriteria
{
// empty
}

// Both on the server and on the client
public class DefaultSearchCriteriaDTO : ISearchCriteria
{
List<string> ResourceNames { get; set; }
List<int> OtherCriteria { get; set; }
}

// Both on the server and on the client
public class MySearchCriteriaDTO : ISearchCriteria
{
string SearchString { get; set; }
}

// On the server.
public interface IStrategy<T> : where T : ISearchCriteria
{
public List<string> Match(T criteria);
}

// On the server
public class DefaultStrategy : IStrategy<T> where T : DefaultSearchCriteriaDTO
{
public List<string> Match(T criteria)
{
// search for resources and returns those found
}
}
  • 是否有一些设计模式可用于此目的?
  • 有更好的选择吗?

最佳答案

老实说,除非有需要,否则我不会实现它。

就目前而言,您将围绕可能永远不存在的情况进行编程。您怎么知道什么时候“完成了?”

记住:YAGNI .

关于c# - 如何设计通用搜索条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9471459/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com