我想在运行时在C#中创建自定义对象,对象将具有从xml文件导入的属性。 xml文件如下所示:
<field name="FirstName" value="Joe" type="string" />
<field name="DateAdded" value="20090101" type="date" />
我想在c#中创建具有FirstName和DateAdded等属性的对象,这些对象具有正确的属性类型。我怎样才能做到这一点?我尝试使用if语句的函数来确定基于“type”属性的类型,但我也想动态评估类型。
感谢。
答案 0 :(得分:4)
您可以通过CodeDOM执行此操作,也可以使用dynamic
和ExpandoObject轻松完成此操作。
但是,要意识到,如果事先不知道类型,就很难有效地使用它们。通常,制作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属性将存储日期类型值。