在DLL中看不到类
我创建了一个DLL来容纳一个我想在多个应用程序中使用的类,以及LINQ创建的DBML。
我遇到的问题是,当编译的DLL被设置为引用时,该类在外部应用程序中不可见/可用,尽管所有LINQ对象都是。 此外,当我手动导入.cs文件,然后我可以按预期使用该类。
我已经将类构建为静态,代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; using System.Data; namespace OsgShared { static class GlobalClass { public static USER CurrentUser { get; set; } private static Dictionary _SysDetIDs; public static Dictionary SysDetIDs { get { return _SysDetIDs; } } private static Dictionary _AccInfoTypeIDs; public static Dictionary AccInfoTypeIDs { get { return _AccInfoTypeIDs; } } private static Dictionary _AccGroupTypeIDs; public static Dictionary AccGroupTypeIDs { get { return _AccGroupTypeIDs; } } private static Dictionary _EntTypeIDs; public static Dictionary EntTypeIDs { get { return _EntTypeIDs; } } /// /// Populates Dictionary objects containing database reference data /// public static void PopulateDictionaries() { _SysDetIDs = new Dictionary(); _AccInfoTypeIDs = new Dictionary(); _AccGroupTypeIDs = new Dictionary(); _EntTypeIDs = new Dictionary(); OsgDBDataContext db = new OsgDBDataContext(); // Populates Dictionaries here db.Dispose(); } } }
我是如何设置这个类以防止它在通过DLL使用时出现的?
非常感谢
public
:
public static class GlobalClass { ... }
类的默认可访问性是internal
:仅对同一程序集内的代码可见。 这就是为什么当你将它作为.cs
包含在项目中时它确实有效。
将public
添加到类中,它没有修饰符,因此它在dll中是私有的。