我的简单类定义如下:
public class class1 { public int a; }
private class1 _myclass;
//define a public readonly class
public class1 myclass {
get { return _myclass; }
//set { _myclass = value; }
}
并且在我的代码中不接受以下行:
myclass = new myclass(); //class is read only
但是我仍然可以写下以下内容:
myclass.a = 2; //i can edit readonly class element
我想阻止这种情况,并使我的只读类的元素不可用。
编辑:我忘了提到我仍然想以这种方式访问它:
_myclass.a = 2; //passing from private class is intended purpose
答案 0 :(得分:3)
Readonly只会阻止你替换myclass引用,你仍然可以调用变量本身的方法。如果你想让MyClass不可修改,我推荐一个只有.a的getter的接口,然后把它传递给使用myclass的人而不是对类本身的完整引用。
答案 1 :(得分:0)
您可以更好地创建界面,而不是创建只读类。您可以从界面返回值类型和不可变对象。您可以尝试创建只读接口,然后您的类型可以实现它。因此,您可以将带有接口的类型传递给只执行读取的代码。