2011-07-05 158 views
4

我需要动态创建类对象。我尝试使用动态关键字。如何动态创建类

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

       LogicLayer.Update(dataTransferObject); 

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

+0

dtoClass是否存在于编译时或仅在运行时? –

+0

该对象仅在运行时存在。 – AnxiousdeV

回答

7

使用ExpandoObject来完成此操作。

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

我正在寻找这个现在,似乎是我之后 – AnxiousdeV

+0

宾果,谢谢大家! – AnxiousdeV

1

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

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

转到所谓的 “expandos将与动态” 的部分 - 它可以让你做到以下几点:

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

斯图

+0

这是很棒的信息,我可以预见自己使用ClayFactory,非常好! – AnxiousdeV

+0

是的 - 它建立在Expando的基础上,但给你一个更清晰的语法。乱七八糟的也在我的待办事项清单上。 – Stu

-1

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

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

匿名类型提供了一种方便的方式来封装一组只读属性的成单个对象,而不必首先明确地定义一个类型。

+0

问题是,这个对象将被传递到另一个逻辑层,我不确定它是否会被正确解释? – AnxiousdeV

+0

也许它会更好地使用此问题的接口 –

+1

但是,匿名类型是内部的,不能通过程序集边界。 – jbtule