Динамически скомпилируйте кусок кода и добавьте его в текущий класс - PullRequest
0 голосов
/ 12 июня 2011

Я хочу на лету создать несколько свойств внутри конструктора класса и добавить их в текущий класс.Шаблон свойства следующий:

public [PropertyType] [PropertyName]
{
get {return Container.Resolve();}
}

Я немного читал о CodeDom и Reflection.Emit, но не смог выяснить, как их использовать в данном конкретном случае.1005 * Любая подсказка будет принята с благодарностью.Заранее спасибо

РЕДАКТИРОВАТЬ: Я уточняю цель из-за количества вопросов ... Я пытаюсь реализовать базовый класс для локатора модели представления.Привязка в xaml достигается путем обращения к свойству по его пути, поэтому оно ДОЛЖНО быть свойством.Типы и имена добавляемых свойств известны только во время выполнения, поэтому я использую отражение, чтобы получить их.Короче говоря, мне нужен пример того, как взять кусок кода и динамически скомпилировать его в заданный класс.

Ответы [ 4 ]

2 голосов
/ 12 июня 2011

Если вы находитесь под C # 4, вы можете использовать новые динамические функции для этого.Используйте ExpandoObject или DynamicObject, чтобы динамически добавлять свойства к вашему объекту.Если вы затем ссылаетесь на них в XAML, они будут правильно разрешены.

В любом случае изменить существующий класс невозможно.Вы можете создать новый класс, который может наследовать от существующего класса, и добавить к нему свойства.Вы должны иметь возможность связываться с ними из XAML.

1 голос
/ 12 июня 2011

альтернативный подход:

вы можете реализовать ICustomTypeDescriptor и предоставить дополнительные свойства

ссылка: Проблема с привязкой данных Grid

0 голосов
/ 12 июня 2011

Свяжите свои вещи xaml с чем-то вроде XML и измените XML во время выполнения

0 голосов
/ 12 июня 2011

Вы можете создавать новые вызовы и наследовать их от текущего класса, новый класс может иметь свойства на лету и функциональность базового класса

да, можно взглянуть на это Требуется помощь при добавлении новых методов, свойств в существующие классы динамически

...