2017-01-16 14 views
0

非常に基本的な質問ですが、私はC#の初心者です。私は、C#でのクラスのデフォルトのアクセス修飾子が "internal"であることを知っています。これは、同じアセンブリで利用可能であることを意味します。しかし、モデルに2つのパブリック(アクセシビリティ)クラスの従業員と部署があるとします。そうすれば、お互いを参照する必要はありません。しかし、私もコントローラ内のDepartmentControllerとEmployeeControllerがあり、私はEmployeeとDepartmentsクラスを参照する必要がありますが、DepartmentController、EmployeeController Employee、Departmentsはプロジェクト名である同じアセンブリにありません。C#のクラスアクセス修飾子

これは、プログラムの写真です: enter image description here

+1

[名前空間](https://msdn.microsoft.com/en-us/library/0d941h9d.aspx)と[アセンブリ](https://msdn.microsoft.com/en)が混在している可能性があります。 -us/library/ms973231.aspx)。 – cubrr

+1

あなたが同じアセンブリにそれらを置くなら、それはそうです。 –

+0

@cubrr自分の投稿に番組の画像を追加しました。 – slowjamsz11

答えて

0

彼らは同じ名前空間(MVCDemoコントローラー= MVCDemoモデル。!。)にされていないため、これらのクラスを参照する必要があります。これらのクラスをアセンブリをインポートして別のプロジェクトのスコープにインポートすると、内部クラスではなくパブリッククラスのみが表示されます。モデルをクラスライブラリプロジェクトに移動し、アクセス修飾子を使用してスコープの意味を理解してみることをお勧めします(別のアセンブリを使用して内部クラスをインポートしようとするような)。

0

はい、ソリューションには1つのプロジェクトがあり、プロジェクトには1つのアセンブリがあります。

あなたのコントローラ上のパブリックアクセス修飾子を必要とする理由がここで説明されています...

Why does the ASP.NET MVC Controller class need to be public?

あなたがそれらを可能にするためには、コントローラへのニーズへのアクセスを参照している基本的にMVCフレームワークMVCフレームワークが内部であれば、MVCフレームワークがあなたのコントローラにアクセスすることはできません。

あなたのソリューションには1つのプロジェクトがありますが、他の多くのアセンブリを参照しています。プロジェクト内のいずれか、または参照しているアセンブリから作成されたアセンブリであれば、パブリックアクセス修飾子が必要です。