2

複数のアプリケーションで使用するクラスと、LINQによって作成されたDBMLを格納するDLLを作成しました。

私が抱えている問題は、コンパイルされた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();
        }
    }
}

このクラスの設定方法に明らかに問題があり、DLLを介して使用したときに表示されないようになっていますか?

どうもありがとう

4

2 に答える 2

10

それを作るpublic

public static class GlobalClass
{
   ...
}  

クラスのデフォルトのアクセシビリティは次のinternalとおりです。同じアセンブリ内のコードにのみ表示されます。これが.cs、プロジェクトにとして含めると機能する理由です。

于 2012-11-07T14:35:34.877 に答える
4

クラスに追加publicします。修飾子がないため、dll内でプライベートになります。

于 2012-11-07T14:35:55.063 に答える