0

だから私はボードユーザーコントロールを持っています

 public partial class BoardController : UserControl
    {
        List<HotSpot> _hotSpots;
        List<Area> _areas;
        public BoardController()
        {
            InitializeComponent();
            InitializeHitSpots();
            InitializePlacementArrays();
        }...

そしてゲームコントローラー

public class GameController
{
    private BoardController _board;
    private List<PlayerController> _players;

    public GameController()
    {
        _board = new BoardController();
        _players = new List<PlayerController>();

    }
    public BoardController Board
    {
        get
        {
            return _board;
        }
    }...

これで、パブリックプロパティBoardがありますが、BoardControllerクラスを内部にすると、次の行にエラーがスローされます。

    private void Form1_Load(object sender, EventArgs e)
    {
        game = new GameController();           
        this.Controls.Add(game.Board); //<-- this line 
    }

 Error:  GameController.Board' is inaccessible due to its protection level  

同じアセンブリ内のクラスがBoardControllerを使用できるが、他のアセンブリがBoardControllerオブジェクトを作成したり、アセンブリの外部でBoardControllerを変更したりできないようにするための、適切なクラス修飾子宣言は何ですか?

4

1 に答える 1

2

同じアセンブリ内のクラスがBoardControllerを使用できるが、他のアセンブリがBoardControllerオブジェクトを作成したり、Game Controller内でBoardControllerを変更したりできないようにするための、適切なクラス修飾子宣言は何ですか?

インスタンス化を防ぐには、コンストラクター にマークを付けinternalます。

internal BoardController() { ... }

BoardControllerただし、「内部を変更」しようとすることの意味は明確ではありませんGameControllerBoard プロパティ参照の変更を防ぎたい場合は、セッターを提供しないことですでに変更を行っています。BoardControllerクラス自体をアセンブリの外部で不変にしようとしている場合は、状態を変更するプロパティ/メソッドをすべてに制限する必要がありますinternal

于 2013-02-28T01:23:48.330 に答える