在运行时在C#中创建自定义对象
问题描述:
我想在运行时在C#中创建自定义对象,这些对象将具有从xml文件导入的属性。 xml文件看起来是这样的:在运行时在C#中创建自定义对象
<field name="FirstName" value="Joe" type="string" />
<field name="DateAdded" value="20090101" type="date" />
我想创建在C#中有诸如姓和DateAdded和具有正确类型的属性属性的对象。我怎样才能做到这一点?我已经尝试使用if语句的函数来确定基于“type”属性的类型,但我想在动态评估类型。
谢谢。
答
您可以通过CodeDOM或更容易地使用dynamic
和ExpandoObject来完成此操作。
但是,要意识到,事先不知道类型,很难有效地使用它们。通常,制作Dictionary<TKey, TValue>
或类似的选项是一个更容易的选择。
+0
谢谢,我不知道ExpandoObject。 – jangeador 2010-10-21 16:12:00
答
对不起,我的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属性将存储有一个日期类型值。
为什么你需要一个对象?你不能只使用XML?一本字典? – 2010-10-21 02:21:00
您必须告诉我们您正在使用的C#版本。 – 2010-10-21 02:27:04
@Esteban,我需要这个对象,因为它允许我使用这些类型将其转换为不同的格式以便导出。 @Danny,我正在使用Visual Studio 2010. – jangeador 2010-10-21 05:35:33