日期:2014-05-20  浏览次数:20816 次

如何实现这样的具有只读属性的类
我做一个组件。     组件里面有两个类A,B。
B作为A一个属性。
我要求在类A里面能够读写B的属性,然后把B作为自己的一个属性公开。但是使用这个组件的人只能够读B这些属性,不能都改变B的属性。
也就是说,只能在组件内能够改变B的属性,组件之外不可以。

请教,怎么样实现阿。

------解决方案--------------------
一个不推荐的办法,把A变成B的内部类就行了,就是把A写在B里面。
------解决方案--------------------
Protected
------解决方案--------------------
可以考虑返回它的一个副本,例如下面的:
public DataTable source
{
get
{
return this._source.Copy();
}
}
当然,你这个对象应有一个复制其内容的方法,比如Copy(),相当于C++里的复制构造函数一样,但在.NET里没有复制构造函数,只可以写一个类似的复制方法.
------解决方案--------------------
用.Net2.0
B里声明属性:
private string m_Name;
public string Name
{
get { return m_Name; }
internal set { m_Name = value; }
}
------解决方案--------------------
private string m_Name;
public string Name
{
get { return m_Name; }
protected internal set { m_Name = value; }
}

------解决方案--------------------
class AClass
{
private BClass b;
private B
{
get{ return b;}
set{ b = value;}
}
}
class BClass
{
//.......
}
------解决方案--------------------
B既然对A公开,那么如果其访问级别为public,那么必然为其他类访问
如果要实现你说的,让A,B处于同一项目,设置B访问级别为internal应该可以