我有一个名为Class1的类,在这个类中我有一个名为MyProperty的属性.在另一个类中,我声明了Class1属性,但我希望在这种情况下MyProperty是readonly.我怎样才能做到这一点?
public class Class1
{
public int MyProperty { get; set; }
}
public class Class2
{
public Class1 Class1Property { get; }
}
public class Class3
{
void Method()
{
Class2 obj = new Class2();
obj.Class1Property.MyProperty = 2;//I want this be illegal (In this place only)
}
}
Run Code Online (Sandbox Code Playgroud)
做一些进一步的抽象并创建一个接口Class1:
public interface IClass1
{
int MyProperty { get; }
}
Run Code Online (Sandbox Code Playgroud)
然后Class1实现这个接口:
public class Class1 : IClass1
{
public int MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Class2不应该暴露Class1实例,而是实例IClass1:
public class Class2
{
public IClass1 Class1Property { get; }
}
Run Code Online (Sandbox Code Playgroud)
现在你得到了你想要的行为:
public class Class3
{
void Method()
{
Class2 obj = new Class2();
obj.Class1Property.MyProperty = 2; // Doesn't work.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |