我有一个非常简单的要求
public class A
{
public int Index{get;set;}
public B ConfigOne{get;set;}
public B ConfigTwo{get;set;}
public void SetConfigOne(string val1, string val2);
public void SetConfigTwo(string val1, string val2);
}
public class B
{
public string Val1{get;set;}
public string Val2{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我如何安排我的两堂课,以便我能够做到这一点:
var a = A.ConfigOne.Val1;
Run Code Online (Sandbox Code Playgroud)
但不是
A.ConfigOne.Val1 = a;
Run Code Online (Sandbox Code Playgroud)
所以基本上我想让我的间接类(B)属性只读,仍然可以在类A中设置。我想通过一个方法公开setter。我怎么做?
创建一个接口,仅公开可实现的数据的只读视图B。这意味着任何直接引用该B对象的人都可以设置其数据,但从其中的属性访问时A将是只读的:
public interface IReadValues
{
string Val1 { get; }
string Val2 { get; }
}
public class A
{
public int Index { get; set; }
public IReadValues ConfigOne { get; set; }
public IReadValues ConfigTwo { get; set; }
public void SetConfigOne(string val1, string val2);
public void SetConfigTwo(string val1, string val2);
}
public class B : IReadValues
{
public string Val1 { get; set; }
public string Val2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
通过不使用自动属性,而是使用通过显式属性公开的A类型字段,您可以确保该类也可以修改这些对象。BA
| 归档时间: |
|
| 查看次数: |
709 次 |
| 最近记录: |