Код ниже в значительной степени суммирует то, чего я хочу достичь.
У нас есть решение, которое включает в себя множество различных проектов, однако нам необходимо иметь возможность вызывать методы в проектах из проектов, на которые нет ссылок (может вызвать циклическую ссылку).
Я опубликовал предыдущие вопросы, и приведенный ниже код в значительной степени подходит для использования интерфейсов. Я до сих пор не знаю, как я могу вызвать метод, который находится в другом проекте, на который нет ссылок.
Я не могу создать экземпляр интерфейса, это должен быть класс. Но как я могу создать экземпляр класса, на который нет ссылок. Я не хочу использовать отражение для этого.
Код C # 2.0
Любая помощь приветствуется.
Какой код мне нужно поместить в «GeneralMethod» (Class Raise), чтобы иметь возможность выполнять метод «Update» в классе «Listen»?
// Link Project
namespace Stack.Link
{
public class Interface
{
public interface Update
{
void Update();
}
}
}
// Project A
// References Link only
namespace Stack.ProjA
{
public class Raise
{
public void GeneralMethod()
{
// I want to place code in here to be able to execute
// "Update" method in ProjB.
// Keep in mind that ProjA and ProjB only reference
// Link Project
}
}
}
// Project B
// References Link only
namespace Stack.ProjB
{
public class Listen : Stack.Link.Interface.Update
{
public void Update()
{
// Do something here that is executed from ProjA
Console.Write("Executed Method in ProjB");
}
}
}
Я, наверное, должен уточнить мотивы необходимости делать это. Возможно, есть лучший способ ....
У нас есть базовая форма, на которую ссылаются все другие проекты. В качестве примера мы передаем объект, который содержит различные настройки, при загрузке проекта (из базовой формы).
Если, например, объект настроек имеет некоторые переменные (объект настроек, заполненный в базовой форме), мы бы хотели, чтобы загруженный проект прослушал это изменение и получил новый объект настроек.
Поскольку базовая форма ссылается на все другие проекты, нам нужно, чтобы проекты «прослушивали» события в базовой форме.
Ясно, как грязь: -)