【问题标题】:How to create a class dynamically如何动态创建一个类
【发布时间】:2011-09-29 01:55:36
【问题描述】:

我需要动态创建一个类对象。我尝试使用 dynamic 关键字。

dynamic dataTransferObject = new dtoClass();
                dataTransferObject.Property1= "someValue";
                dataTransferObject.Property2= "someOtherValue";

                LogicLayer.Update(dataTransferObject);

我将解释对象以在逻辑层内执行进一步的操作。编译器不喜欢我的语法,请指教!

【问题讨论】:

  • dtoClass 是在编译时存在还是仅在运行时存在?
  • 这个对象只会在运行时存在。

标签: c# dynamic


【解决方案1】:

使用 ExpandoObject 来完成此操作。

dynamic dataTransferObject = new System.Dynamic.ExpandoObject();
dataTransferObject.Property1 = "someValue";
dataTransferObject.Property2 = "someOtherValue";

【讨论】:

  • 我正在研究这个,似乎是我所追求的
【解决方案2】:

我想这可能就是你要找的东西!

http://www.hanselman.com/blog/NuGetPackageOfTheWeek6DynamicMalleableEnjoyableExpandoObjectsWithClay.aspx

转到名为“扩展和动态”的部分 - 它允许您执行以下操作:

var person = New.Person();
person.FirstName = "Louis";
person.LastName = "Dejardin";

学习

【讨论】:

  • 这是很棒的信息,我可以预见自己会使用 ClayFactory,非常好!
  • 是的 - 它建立在 Expando 的基础上,但语法更简洁。摆弄它也在我的待办事项清单上。
【解决方案3】:

尝试使用匿名类型。检查以下代码:

var v = new { Property1 = "someValue", Property2 = "someOtherValue" };

匿名类型提供了一种方便的方法,可以将一组只读属性封装到单个对象中,而无需先显式定义类型。

【讨论】:

  • 问题是这个对象会被传递到另一个逻辑层,不知道会不会被正确解释?
  • 也许这个问题使用界面会更好
  • 但是,匿名类型是内部的,不能通过程序集边界。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
  • 2013-11-03
  • 2016-01-24
  • 2017-04-15
  • 2021-11-27
  • 1970-01-01
  • 2018-03-09
相关资源
最近更新 更多