传递对象而不允许用户创建对象的正确类修饰符是什么?
本文关键字:是什么 对象 不允许 创建对象 用户 | 更新日期: 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
。