C# Can';在DLL中看不到类
我已经创建了一个DLL来容纳我想要在多个应用程序中使用的类,以及由LINQ创建的DBML 我遇到的问题是,当编译的DLL设置为引用时,该类在外部应用程序中不可见/不可用,尽管所有LINQ对象都是。另外,当我手动导入.cs文件时,我可以按预期使用该类 我将该类构建为静态类,代码如下:C# Can';在DLL中看不到类,c#,winforms,C#,Winforms,我已经创建了一个DLL来容纳我想要在多个应用程序中使用的类,以及由LINQ创建的DBML 我遇到的问题是,当编译的DLL设置为引用时,该类在外部应用程序中不可见/不可用,尽管所有LINQ对象都是。另外,当我手动导入.cs文件时,我可以按预期使用该类 我将该类构建为静态类,代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Componen
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<string,int> _SysDetIDs;
public static Dictionary<string,int> SysDetIDs { get { return _SysDetIDs; } }
private static Dictionary<string, int> _AccInfoTypeIDs;
public static Dictionary<string, int> AccInfoTypeIDs { get { return _AccInfoTypeIDs; } }
private static Dictionary<string, int> _AccGroupTypeIDs;
public static Dictionary<string, int> AccGroupTypeIDs { get { return _AccGroupTypeIDs; } }
private static Dictionary<string, int> _EntTypeIDs;
public static Dictionary<string, int> EntTypeIDs { get { return _EntTypeIDs; } }
/// <summary>
/// Populates Dictionary objects containing database reference data
/// </summary>
public static void PopulateDictionaries()
{
_SysDetIDs = new Dictionary<string,int>();
_AccInfoTypeIDs = new Dictionary<string,int>();
_AccGroupTypeIDs = new Dictionary<string,int>();
_EntTypeIDs = new Dictionary<string, int>();
OsgDBDataContext db = new OsgDBDataContext();
// Populates Dictionaries here
db.Dispose();
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用系统组件模型;
使用系统数据;
命名空间OsgShared
{
静态类全局类
{
公共静态用户CurrentUser{get;set;}
专用静态字典_SysDetIDs;
公共静态字典SysDetIDs{get{return\u SysDetIDs;}}
私有静态字典_AccInfoTypeIDs;
公共静态词典accinotypeids{get{return\u accinotypeids;}}
私有静态字典_accGroupTypeId;
公共静态字典AccGroupTypeIDs{get{return\u AccGroupTypeIDs;}}
私有静态字典_enttypeid;
公共静态字典EntTypeIDs{get{return\u EntTypeIDs;}}
///
///填充包含数据库引用数据的字典对象
///
公共静态无效填充字典()
{
_SysDetIDs=新字典();
_AccInfoTypeIDs=newdictionary();
_AccGroupTypeId=新字典();
_EntTypeIDs=newdictionary();
OsgDBDataContext db=新的OsgDBDataContext();
//在这里填充字典
db.Dispose();
}
}
}
我设置这个类的方式是否有任何明显的错误,阻止它在通过DLL使用时出现
非常感谢将其公开:
public static class GlobalClass
{
...
}
类的默认可访问性是
internal
:仅对同一程序集中的代码可见。这就是为什么当您将其作为.cs
包含在项目中时,它会起作用 将public
添加到类中,它没有修饰符,因此在dll中是私有的。dll中的私有称为“内部”。要阅读有关默认可访问性的详细信息-