[英]sharing a static class with a DLL in C# without passing a reference
VS2012 for Desktop .net Framework 4.5普通Windows窗体应用程序,而不是WPF
您好,我试图寻找答案,但是我不确定正确的术语。 我设法破坏了代码,不明白自己做错了什么。 (我认为我没有做任何更改,但是...)
我有一个包含2个项目的解决方案。 第一个项目是可执行程序,第二个项目是DLL,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:名称“设置”在当前上下文中不存在
对此的标准解决方案似乎是添加对project2的引用,但这将创建循环依赖项,因为项目1调用2作为DLL。
老实说,我真的没有改变任何与此相关的内容,但显然我也做了。 看着它,我看不到项目2如何在没有引用的情况下访问项目1中的类,但是project2_class构造函数的参数列表不包含一个,并且我绝对肯定它没有改变(而且由于向后兼容的原因,我无法更改它)。 非常感谢您提供帮助,因为要使其正常工作需要大量的工作。
作为附带说明,我肯定已经学到了关于不使用源代码控制的课程。 而不是发表“这是如何工作的”评论,而不是发表“这是做什么的”评论。
动态可以帮助您吗? 您无法在编译时获取设置字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.