使用Dynamic对象而不是创建该对象的类有什么好处?

时间:2015-08-31 20:46:52

标签: c# asp.net-mvc oop

我想序言我没有经常使用动态对象,而且最近才遇到这个问题。我有一个特定的场景,我将在下面解释,但我想知道与为该对象创建类相比,实现动态对象的确切优势是什么。

我有一个将动态对象作为参数的方法。为了篇幅,我不会发布足够多的代码来解决问题:

public static Tax GetEmployeeTax(string Id, Employee employee, dynamic inputObject)
{
var temp = new Employee();
//use the dynamic object properties
return temp;
}

在这种情况下,inputObject将具有帮助识别员工税的属性,而不直接与员工类相关。我主要给了inputObject以下属性:

dynamic dynamicEmployeeTax = new ExpandoObject();
dynamicEmployeeTax.FederalTaxInfo = "Some information";
dynamicEmployeeTax.StateTaxInfo = "Some other information";

与使用动态对象相比,使用它自己的类有什么好处吗?这种或那种方式有什么好处吗?

1 个答案:

答案 0 :(得分:1)

您想要创建一个类有几个原因:

  • 强类型利用编译器来确保正确性。
  • 每个封装数据的类都像契约。您可以通过检查课程来想象如何使用。
  • 你强迫那个人读完 的工作原理。读取类属性并对其实用程序进行成像更为简单。
  • 这是一个糟糕的计划和工程标志。您正在创建数据blob而不是解决特定问题的结构化数据集。想想泥坑和乐高积木。

该列表无限制地进行。我认为这里的共识是避免它。极少数情况下这很有用。对于大多数人来说,坚持合同和编码到抽象而不是实现细节。