c# - 防止未使用的属性从对象传递的最佳方法

标签 c# wcf object

我正在整合一个处理大型搜索的 WCF 服务(目前有 50-60 个参数,将来可能会添加更多)。为了处理这个问题,我有一个搜索对象,其中包含将在消息对象中传递给服务的所有条件。虽然所有搜索参数都必须可用,但通常情况下有 2-3 个参数接收用户输入而其他参数为空。在我看来,如果只使用几个字段,通过每个方法传递整个对象是没有意义的。我正在寻找一种技术来提取与其值一起使用的字段,然后可以验证这些字段并将其传递到数据层以执行搜索。我能想到的几种实现此目的的方法包括:

  • 使用反射循环遍历属性,并将非空属性添加到 Dictionary<string, object> .这里想到的问题是我丢失了搜索参数的类型,这意味着数据层搜索功能将是一个巨大的 case 语句,每个潜在字段都有硬编码的转换值。这似乎有点矫枉过正,并且导致耦合过于紧密。
  • 创建一个具有 Name、Value 和 System.Type 属性的 SearchValue 类,并使用反射构建一个 List<SearchValue> .这仍然会导致在搜索中进行大量案例检查,但不是按属性,而是按类型。这在使过程更“通用”(即独立于使用的搜索值组合)方面具有一定的吸引力,但也感觉我在重新发明轮子。

我缺少这些技术的优点和缺点是什么?有没有更好的方法来实现我的目标?

最佳答案

我不确定这是否适用于这条通信线路,但可能是 EmitDefaultValue DataMemberAttribute 上的属性?

关于c# - 防止未使用的属性从对象传递的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4501793/

相关文章:

c# - 在 RDLC 中添加多个表

c# - SQL 服务器 CLR : how to call WCF Service In CLR SQL stored procedure in database project

actionscript-3 - 如何从子 Slider 动画片段访问父对象中定义的对象

javascript - JavaScript 中如何检查一个对象是否是常规对象

WCF ServiceHost basicHttpBinding 503 错误

java - Java 中的对象内的对象

c# - WPF 中的 Application.ProductName 等价物?

c# - 调用 SysFreeString() 时出现堆损坏错误

c# - 使用 OpenXML SDK 将包含注释的幻灯片从一个 PowerPoint 演示文稿复制到另一个演示文稿

c# - 在用 C# 编写的 WCF 客户端中验证证书