Создание пользовательских объектов во время выполнения в C # - PullRequest
2 голосов
/ 21 октября 2010

Я хочу создавать пользовательские объекты в C # во время выполнения, объекты будут иметь свойства, импортированные из XML-файла. XML-файл выглядит примерно так:

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

Я хотел бы создать объекты в c #, которые имеют свойства, такие как FirstName и DateAdded, и которые имеют правильный тип для свойств. Как я могу это сделать? Я попытался использовать функцию с инструкциями if для определения типа на основе атрибута «type», но я также хотел бы оценить типы на лету.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 21 октября 2010

Вы можете сделать это с помощью CodeDOM или более просто, используя dynamic и ExpandoObject .

Однако, понимайте, что, не зная заранее типов,их сложно эффективно использовать.Часто сделать Dictionary<TKey, TValue> или подобный вариант проще.

1 голос
/ 21 октября 2010

Извините, мой 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 будет иметь сохраненное значение даты.

...