在C#中运行时创建自定义对象

时间:2010-10-21 02:12:02

标签: c# object custom-attributes

我想在运行时在C#中创建自定义对象,对象将具有从xml文件导入的属性。 xml文件如下所示:

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

我想在c#中创建具有FirstName和DateAdded等属性的对象,这些对象具有正确的属性类型。我怎样才能做到这一点?我尝试使用if语句的函数来确定基于“type”属性的类型,但我也想动态评估类型。

感谢。

2 个答案:

答案 0 :(得分:4)

您可以通过CodeDOM执行此操作,也可以使用dynamicExpandoObject轻松完成此操作。

但是,要意识到,如果事先不知道类型,就很难有效地使用它们。通常,制作Dictionary<TKey, TValue>或类似选项是一种更容易的选择。

答案 1 :(得分: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属性将存储日期类型值。