3

C#クラスライブラリを作成しました。その中に2つのクラスを挿入します。例えば:

Apple.cs Orange.cs

namespace FoodLibrary
{
 namespace Apples
 {
    public class Apples
    {
        public string type { get; set; }
        public string colour { get; set; }
        public string size { get; set; }
    }
 }
}

Orange.csではほぼ同じものが形成されます(名前空間AppleとクラスAppleは「Orange」に変換されます)。

編集(これが要求されたOrange.csです):

namespace FoodLibrary
{
    namespace Orange
    {
        class Orange
        {
          public string colour { get; set; }
          public string type { get; set; }
          public string size { get; set; }
        }
    }
}

任意の組み合わせをビルド/再ビルドした後、デバッグフォルダに.dllを取得します。このDLLを参照すると、1つの名前空間/クラス(つまりApple)にしかアクセスできないようです。これにより、クラスライブラリで作成した最初のクラスにアクセスできます。クラスをいくつ作成しても、DLLには1つしかありません。

私は同じ結果を出しました:

Visual Studios 2010 Visual Studios Express 2008(C#)

補足:機能する1つのクラスを更新する(つまり、新しいプロパティを追加する)と、ビルド時にDLLが変更されます。「clear」、「rebuild」、「build」を試しました。

編集:明らかに私はばかで、オレンジが公開されていないことに気づいていませんでした。私がそれを変更すると、それは機能しました。新しいプロジェクトによって生成されたクラスが「パブリック」である理由はよくわかりませんが、新しいクラスを追加する場合はそうではありません。その逆も同様です。

皆さんの提案に感謝します。

4

3 に答える 3

5

あなたのクラスはあなたのクラスのようにOrange宣言されていません。パブリックとして宣言してみてください-そうすればアクセスできるはずです。publicApplesOrange

于 2013-03-20T00:17:24.423 に答える
0

Visual Studioで、ソリューションエクスプローラーでOrange.csファイルを選択し、[プロパティ]ペインを確認します。ビルドアクションはコンパイルに設定されていますか?そうでない場合、ファイルはソースコードとして含まれていません。

Visual Studioは、奇妙な理由で、新しいファイルを作成するときにビルドアクションを別のものに変更することがあります。スクリーンショットや同様の問題については、この男のブログを確認してください。

http://dimarzionist.wordpress.com/2008/07/24/strange-vs-2008resharper-behaviour-buildaction-property/

于 2013-03-20T00:03:34.563 に答える
0
  1. 名前空間名をクラス名とは異なるものにしてください。つまり、名前空間=AppleSクラス=Apple
  2. 名前空間ClassLibraryTestをFoodLibraryに変更します
于 2013-03-20T00:16:55.513 に答える