【发布时间】:2008-12-16 01:54:29
【问题描述】:
下面的代码几乎总结了我想要实现的目标。
我们有一个包含许多不同项目的解决方案,但是我们需要能够从未引用的项目中调用项目中的方法(会导致循环引用)。
我已经发布了以前的问题,下面的代码几乎就是我使用接口提出的。我仍然不知道如何调用驻留在未引用的不同项目中的方法。
我不能创建接口的实例,它必须是一个类。但是如何创建未引用的类的实例。我不想为此使用反射。
代码是 C# 2.0
感谢任何帮助。
我需要在“GeneralMethod”(Class Raise)中放置什么代码才能执行“Listen”类中的“Update”方法?
// 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");
}
}
}
我可能应该澄清需要这样做的动机。也许有更好的方法....
我们有一个基础表单,所有其他项目都可以从中引用。作为示例,我们在项目加载时(从基础表单)传递一个包含各种设置的对象。
例如,如果设置对象有一些变量更改(设置对象填充在 baseform 中),我们希望加载的项目监听此更改并获取新的设置对象。
因为 baseform 引用了所有其他项目,我们需要让项目“监听”baseform 中的事件。
一清二楚:-)
【问题讨论】:
-
另外...看看托管的可扩展性框架
标签: c# interface polymorphism