您的位置:程序门 -> .net技术 -> c#



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


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何实现这样的具有只读属性的类[已结贴,结贴人:vovo2000]
发表于:2007-01-12 17:45:33 楼主
我做一个组件。     组件里面有两个类a,b。
b作为a一个属性。
我要求在类a里面能够读写b的属性,然后把b作为自己的一个属性公开。但是使用这个组件的人只能够读b这些属性,不能都改变b的属性。
也就是说,只能在组件内能够改变b的属性,组件之外不可以。

请教,怎么样实现阿。
发表于:2007-01-12 17:53:451楼 得分:8
一个不推荐的办法,把a变成b的内部类就行了,就是把a写在b里面。
发表于:2007-01-12 17:54:552楼 得分:8
protected
发表于:2007-01-12 18:02:293楼 得分:10
可以考虑返回它的一个副本,例如下面的:
public   datatable   source
{
get
{
return   this._source.copy();
}
}
当然,你这个对象应有一个复制其内容的方法,比如copy(),相当于c++里的复制构造函数一样,但在.net里没有复制构造函数,只可以写一个类似的复制方法.
发表于:2007-01-12 18:02:474楼 得分:15
用.net2.0
b里声明属性:
private   string   m_name;
public   string   name
{
get   {   return   m_name;   }
internal   set   {   m_name   =   value;   }
}
发表于:2007-01-12 18:05:365楼 得分:10
private   string   m_name;
public   string   name
{
get   {   return   m_name;   }
protected   internal   set   {   m_name   =   value;   }
}
发表于:2007-01-12 21:39:456楼 得分:14
class   aclass
{
          private   bclass   b;
          private   b
          {    
                get{   return   b;}
                set{   b   =   value;}
          }
}
class   bclass
{
//.......
}
发表于:2007-01-12 21:40:287楼 得分:0
class   aclass
{
          private   bclass   b;
          private   bclass   b
          {    
                get{   return   b;}
                set{   b   =   value;}
          }
}
class   bclass
{
//.......
}
发表于:2007-01-12 21:41:238楼 得分:0
那么只有在aclass内部才可以使用bclass的对象.
发表于:2007-01-12 23:43:109楼 得分:15
b既然对a公开,那么如果其访问级别为public,那么必然为其他类访问
如果要实现你说的,让a,b处于同一项目,设置b访问级别为internal应该可以
发表于:2007-01-12 23:47:5210楼 得分:0

学习!
发表于:2007-01-13 10:40:4311楼 得分:0
谢谢各位高手


快速检索

最新资讯
热门点击