在C#中动态创建自定义对象

3

我希望能够在C#中动态创建自定义对象,这些对象将具有从xml文件中导入的属性。xml文件大致如下:

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

我希望能用C#创建对象,这些对象包含FirstName和DateAdded等属性,并且属性类型正确。请问应该如何实现呢?我尝试使用if语句结合"type"属性来判断属性类型,但我也想实时评估属性类型。
谢谢。

为什么需要一个对象?不能只使用XML或字典吗? - Esteban Araya
你必须告诉我们你正在使用的 C# 版本。 - Cheng Chen
@Esteban,我需要这个对象,因为它让我可以使用类型来将其转换为不同的格式以进行导出。@Danny,我正在使用Visual Studio 2010。 - jangeador
2个回答

5
您可以通过使用CodeDOM或更轻松地使用dynamicExpandoObject来实现此目的。

但是,请注意,如果不事先知道类型,则难以有效地使用它们。通常,使用Dictionary<TKey, TValue>或类似选项会更容易一些。


谢谢,我之前不知道ExpandoObject。 - jangeador

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 属性将存储一个日期类型的值。


谢谢,这跟我现在的很相似。 - jangeador

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接