在DLL中看不到类

时间:2012-11-07 14:34:41

标签: c# winforms

我创建了一个DLL来容纳一个我想在多个应用程序中使用的类,以及LINQ创建的DBML。

我遇到的问题是,当编译的DLL被设置为引用时,该类在外部应用程序中不可见/可用,尽管所有LINQ对象都是。此外,当我手动导入.cs文件时,我可以按预期使用该类。

我已经将类构建为static,代码如下:

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();
        }
    }
}

我是如何设置此类以防止它在通过DLL使用时出现的任何明显错误的?

非常感谢

2 个答案:

答案 0 :(得分:10)

将其设为 public

public static class GlobalClass
{
   ...
}  

类的默认可访问性是internal:仅对同一程序集内的代码可见。这就是为什么当它在项目中包含.cs时它确实有效。

答案 1 :(得分:4)

public添加到类中,它没有修饰符,因此它在dll中是私有的。