У меня здесь есть головоломка, и я даже не уверен, что это возможно.Использование динамического класса/свойств во время выполнения для загрузки конфигурации
Я разрабатываю приложение с плагинами, где все плагины будут иметь доступ (чтение/запись) к общей конфигурации в главном приложении. Есть более простые способы решения проблемы, которую я представляю, но поскольку это проект, не связанный с работой, я могу свободно играть :)
Предположим, у нас есть Plugin_A
, который наследует абстрактный класс PluginBase
. Абстрактный класс предоставляет свойство IConfiguration Config
, доступ к которому плагин можно получить для записи в эту общую конфигурацию. IConfiguration Config
правильно установлен хостом при загрузке плагина, чтобы ограничить доступную конфигурацию, к которой будет иметь доступ определенный плагин.
Что я хотел бы сделать, это попробовать и использовать ключевое слово Dynamic в C# 4.0 для плавного ввода конфигурационного класса.
в псевдо C# код здесь, что я хотел бы достичь
public class Plugin_A: PluginBase
{
public void DoSomethingWithConfig()
{
ShowAMessageBox(Config.SomeMessage);
Config.HasShownMessage = true;
}
}
Теперь - в этом примере я не хочу, чтобы на самом деле определить .SomeMessage
и .HasShownMessage
, а у них быть динамичными и возвращаемой при вызове при ,
Похоже на протяжение, но это вообще возможно?
Это тот! – Timwi
+1 @Timwi, не хотел наступать на ваши динамические пальцы ног, я предположил, что вы имели в виду DynamicObject, но IDynamicObject (который, я считаю, заменен IDynamicMetaObjectProvider, хотя я не мог найти краткую документацию об этом факте) не для слабых сердца и попытки реализовать GetMetaObject сложнее и универсальнее, чем требуется для любой цели, помимо написания библиотеки/фреймворка. – marr75
Вау! Это именно то, что мне нужно. Огромное спасибо! –