我现在要写个这样的东西,
就是有个容器类,里面有很多的item对象,每个item有Index,Index是只读属性,
请问有什么方法可以让容器类修改item.Index,但其他的类就只能访问Index。
delphi里就可以做到,只要把两个类放到同一个文件里就行。
就是有个容器类,里面有很多的item对象,每个item有Index,Index是只读属性,
请问有什么方法可以让容器类修改item.Index,但其他的类就只能访问Index。
delphi里就可以做到,只要把两个类放到同一个文件里就行。
Item类定义:m_index私有属性,暴露出internal属性ManageIndex{get{return m_index;}//get可加可不加 set{m_index=value;}},暴露出public,readonly属性Index{get{return m_index;}}这样只要你规定某些类不和item类在一个程序集,那么这些类只能访问到Index属性
如果容器类和item类在一个程序集,那么容器类可以访问到ManageIndex从而修改m_index,但是访问Index属性是无法修改的只能读取
class a
{
class b
{
int c;
}
}
a 可以访问b.c还有我记得有个friend的,不知道可以不可以做到。
{
private int m_index; internal int ManageIndex
{
get {return m_index;} //可加可不加
set { m_index = value;}
}
public int Index
{
get {return m_index;}
}
}protected class Container
{
public void SetItemIndex(Item x,int newindex)
{
x.ManageIndex = newindex;
}
public int GetItemIndex(Item x)
{
return x.Index;
}
}
-----以上在程序集1,以下是程序集2-------------引用程序集1
public class Guest
{
public int GetItemIndex(Item x)
{
return Index;
}
}
另一种是将item封装成单独的程序集
在容器类程序集中添加
[assembly:InternalsVisibleTo("")]