Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';在DLL中看不到类_C#_Winforms - Fatal编程技术网

C# Can';在DLL中看不到类

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

我已经创建了一个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<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中的私有称为“内部”。要阅读有关默认可访问性的详细信息-