如何实现这样的具有只读属性的类

vovo2000 2007-01-12 05:45:33
我做一个组件。 组件里面有两个类A,B。
B作为A一个属性。
我要求在类A里面能够读写B的属性,然后把B作为自己的一个属性公开。但是使用这个组件的人只能够读B这些属性,不能都改变B的属性。
也就是说,只能在组件内能够改变B的属性,组件之外不可以。

请教,怎么样实现阿。
...全文
222 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
vovo2000 2007-01-13
  • 打赏
  • 举报
回复
谢谢各位高手
qiyu20031022 2007-01-12
  • 打赏
  • 举报
回复

学习!
greennetboy 2007-01-12
  • 打赏
  • 举报
回复
B既然对A公开,那么如果其访问级别为public,那么必然为其他类访问
如果要实现你说的,让A,B处于同一项目,设置B访问级别为internal应该可以
heartdevil 2007-01-12
  • 打赏
  • 举报
回复
那么只有在AClass内部才可以使用BClass的对象.
heartdevil 2007-01-12
  • 打赏
  • 举报
回复
class AClass
{
private BClass b;
private BClass B
{
get{ return b;}
set{ b = value;}
}
}
class BClass
{
//.......
}
heartdevil 2007-01-12
  • 打赏
  • 举报
回复
class AClass
{
private BClass b;
private B
{
get{ return b;}
set{ b = value;}
}
}
class BClass
{
//.......
}
evonne0102 2007-01-12
  • 打赏
  • 举报
回复
private string m_Name;
public string Name
{
get { return m_Name; }
protected internal set { m_Name = value; }
}
flyaqiao 2007-01-12
  • 打赏
  • 举报
回复
用.Net2.0
B里声明属性:
private string m_Name;
public string Name
{
get { return m_Name; }
internal set { m_Name = value; }
}
北京的雾霾天 2007-01-12
  • 打赏
  • 举报
回复
可以考虑返回它的一个副本,例如下面的:
public DataTable source
{
get
{
return this._source.Copy();
}
}
当然,你这个对象应有一个复制其内容的方法,比如Copy(),相当于C++里的复制构造函数一样,但在.NET里没有复制构造函数,只可以写一个类似的复制方法.
JavaK 2007-01-12
  • 打赏
  • 举报
回复
Protected
Ivony 2007-01-12
  • 打赏
  • 举报
回复
一个不推荐的办法,把A变成B的内部类就行了,就是把A写在B里面。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧