传递对象而不允许用户创建对象的正确类修饰符是什么?

本文关键字:是什么 对象 不允许 创建对象 用户 | 更新日期: 2023-09-27 18:01:24

所以我有一个Board User Control

 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 ?

传递对象而不允许用户创建对象的正确类修饰符是什么?

正确的类修饰符声明是什么,以便同一程序集中的类可以使用BoardController,但其他程序集不能创建BoardController对象,也不能在Game Controller中修改BoardController ?

为了防止实例化,标记构造函数 internal:
internal BoardController() { ... }

然而,不清楚你试图"修改GameController内的BoardController"是什么意思。如果您希望防止修改Board 属性引用,您已经通过不提供setter实现了这一点。如果您试图使BoardController本身在程序集之外不可变,则需要使任何修改状态的属性/方法也仅限于internal