2011-07-05 157 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