Динамически скомпилировать кусок кода и добавьте его в текущий класс

StackOverflow https://stackoverflow.com/questions/6321474

  •  27-10-2019
  •  | 
  •  

Вопрос

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

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

Я немного прочитал о Codedom и Reflection.Emit, но не смог выяснить, как их использовать в этом конкретном случае.

Любая подсказка была бы очень оценена. заранее спасибо

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Свяжите свой XAML с чем -то, как XML, и измените XML во время выполнения

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top