DOBON.NET DOBON.NETプログラミング掲示板過去ログ

【C#】クラスの定義でのエラー

環境/言語:[Windows 7 , VS2005 C#]
分類:[.NET]

お世話になります。
C#初心者です。
ログ出力のサンプルを作成しているのですが、
クラスの定義でエラーになります。

(エラー内容)
アクセシビリティに一貫性がありません。フィールドの型 'type' のアクセシビリティはフィールド 'field' よりも低く設定されています。

ご指導をお願いいたします。
以下にサンプルを記載いたします。

(Form側)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace C_Log
{
public partial class Form1 : Form
{
//---- ログ出力クラス
public static clsLog Logger; −−−>ここのLoggerでエラー

(Class側)
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace C_Log
{
class clsLog
{
private string LogPath = "";

#region コンストラクタ
/// <summary>
/// コンストラクタ
/// </summary>
/// <param name="FileName">ログ出力先ファイル名</param>
public clsLog(string FileName)
{
this.LogPath = (FileName != null) ? FileName : "C_Log.log";
this.LogPath = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), this.LogPath);
}
#endregion
■No28594に返信(sueさんの記事)
> お世話になります。
> C#初心者です。
> ログ出力のサンプルを作成しているのですが、
> クラスの定義でエラーになります。
>
> (エラー内容)
> アクセシビリティに一貫性がありません。フィールドの型 'type' のアクセシビリティはフィールド 'field' よりも低く設定されています。
>
> ご指導をお願いいたします。
> 以下にサンプルを記載いたします。

少し内容がわかりにくいかもしれませんが、ビルド エラーどおりかなと思います。
clsLog が public より狭いアクセス修飾子で定義されているのでしょう。
class clsLog を public class clsLog とすればよいです。

ところで、ビルド エラーになる理屈はわかりますよね。
internal でしか定義が公開されない clsLog クラスの型を持つ、
フィールド メンバ 'Logger' が internal より広い public で宣言されている。
これはアセンブリ外からアクセスするにおいて、ムジュンするのでエラーとなります。

# cls なんてプリフィクスをつけているプロジェクトがまだ存在するとは...
■No28595に返信(じゃんぬねっとさんの記事)
>
> 少し内容がわかりにくいかもしれませんが、ビルド エラーどおりかなと思います。
> clsLog が public より狭いアクセス修飾子で定義されているのでしょう。
> class clsLog を public class clsLog とすればよいです。
>
> ところで、ビルド エラーになる理屈はわかりますよね。
> internal でしか定義が公開されない clsLog クラスの型を持つ、
> フィールド メンバ 'Logger' が internal より広い public で宣言されている。
> これはアセンブリ外からアクセスするにおいて、ムジュンするのでエラーとなります。
>
> # cls なんてプリフィクスをつけているプロジェクトがまだ存在するとは...


じゃんぬねっとさん 早速の返信ありがとうございます。
丁寧な解説非常に助かります。
ご指摘の通りにしたところうまくいきました。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板