VS2012用于桌面.net框架4.5普通的Windows窗体应用程序,而不是WPF
您好,我试图寻找答案,但我不确定正确的术语。我设法破坏了我的代码,无法理解我做错了什么。 (我不认为我改变了什么,但是......)
我有一个包含2个项目的解决方案。第一个项目是可执行程序,第二个是DLL,它在运行时加载并由第一个项目使用。
第一个项目包含一个表单,以及一个在同一名称空间中带有公共静态字符串的静态类。 (和一些其他未连接的类)。具体是:
namespace project1_namespace
{
static class settings
{
public static string some_words = "some words in a string";
}
class dll_callback{
//.. some public methods here
}
dll_callback dllcallback; // instance is initialised in the code (not shown)
Form form;
public partial class frm_splash : Form
{
private void frm_splash_FormClosing(object sender, FormClosingEventArgs e)
{
// this function actually loads the DLL, ensuring its the last step
//... some error checking code removed for brevity
Assembly assembly = Assembly.LoadFrom("c:\dllpath\project2.dll");
Type type_init = assembly.GetType("project2_class");
object init = Activator.CreateInstance(type_init, form, dllcallback);
//... some error checking code removed for brevity
}// end method
}// end form class
}// end namespace
当表单关闭时,调用上面显示的方法调用第二个项目类project2_class构造函数。
项目2中的,DLL,有:
namespace project2_namespace
{
// how did i get this working to reference "settings" class from project 1??
public class project2_class
{
public project2_class(project2_namespace.Form1 form_ref, object callback)
{
settings.some_words = "the words have changed";
//... some more stuff
}
}
}
现在,我在project2的一个完全不同的部分尝试了一些代码,VS2012突然开始拒绝编译声明:
错误CS0103:当前上下文中不存在名称“settings”
标准解决方案似乎是添加对project2的引用,但这将创建循环依赖项,因为项目1将2调用为DLL。
我真的不认为我改变了与此相关的任何东西,但我也很清楚。 看着它,我无法看到项目2如何在没有引用的情况下访问项目1中的类,但是project2_class构造函数的参数列表不包含一个,我绝对肯定它没有改变(我出于向后兼容的原因无法更改它。 我真的很感激这方面的帮助,因为要完成这项工作需要付出很多努力。
作为旁注,我肯定已经吸取了关于不使用源代码控制的教训。而不是“如何运作”评论而不是“这是什么”评论。
答案 0 :(得分:1)