2010-10-21 95 views
2

我想在運行時在C#中創建自定義對象,這些對象將具有從xml文件導入的屬性。 xml文件看起來是這樣的:在運行時在C#中創建自定義對象

<field name="FirstName" value="Joe" type="string" /> 
<field name="DateAdded" value="20090101" type="date" /> 

我想創建在C#中有諸如姓和DateAdded和具有正確類型的屬性屬性的對象。我怎樣才能做到這一點?我已經嘗試使用if語句的函數來確定基於「type」屬性的類型,但我想在動態評估類型。

謝謝。

+0

爲什麼你需要一個對象?你不能只使用XML?一本字典? – 2010-10-21 02:21:00

+0

您必須告訴我們您正在使用的C#版本。 – 2010-10-21 02:27:04

+0

@Esteban,我需要這個對象,因爲它允許我使用這些類型將其轉換爲不同的格式以便導出。 @Danny,我正在使用Visual Studio 2010. – jangeador 2010-10-21 05:35:33

回答

4

您可以通過CodeDOM或更容易地使用dynamicExpandoObject來完成此操作。

但是,要意識到,事先不知道類型,很難有效地使用它們。通常,製作Dictionary<TKey, TValue>或類似的選項是一個更容易的選擇。

+0

謝謝,我不知道ExpandoObject。 – jangeador 2010-10-21 16:12:00

1

對不起,我的C#的生鏽,所以我在VB解決這個問題。唯一的辦法就是使用Object類型。退房的屬性類型定義,下面實例方法:

Private m_myVal As Object 
Public Property myVal() As Object 
    Get 
     Return m_myVal 
    End Get 
    Set(ByVal value As Object) 
     m_myVal = value 
    End Set 
End Property 

Public Sub New(ByVal valType As String, ByVal val As Object) 
    If valType = "string" Then 
     myVal = CType(val, String) 
    ElseIf valType = "date" Then 
     myVal = CType(val, Date) 
    End If 
End Sub 

然後,例如,創建一個類的新實例爲:

Dim myDynamicClass as New Class1("date","10/21/2010") 

你設爲myVal屬性將存儲有一個日期類型值。

+0

謝謝,這與我現在擁有的非常相似。 – jangeador 2010-10-21 05:36:50

+0

然後你必須在正確的軌道= P祝你好運! – ewitkows 2010-10-21 14:58:14