2016-12-11 4 views
0

제목은 모두 그것을 말합니다. 액세스 한정자를 통한 액세스를 줄이면 속성을 다시 초기화 할 수 없습니다. 요소가 전역 상태가되는 것을 방지하지 않습니다 (나쁜 습관). workaround with List<T>'s이 있다는 것을 알고 있지만 다른 색인 된 컬렉션에는 무엇을해야합니까?C# 사전 속성 요소가 클래스 외부에서 설정되지 않도록 하시겠습니까?

public class Start 
{ 
    public static void main() 
    { 
     //CODE SMELL AHEAD 
     AttendanceManager.MuteStatuses[0] = new KeyValuePair <string, string> ("", ""); 
    } 
} 

public static class AttendanceManager 
{ 
    public static HybridDictionary MuteStatuses 
    { 
     get 
     { 
      playersMuteStatuses.Add ("", ""); 
      return playersMuteStatus; 
     } 
    }  
    private static HybridDictionary playersMuteStatus = new HybridDictionary(); 
} 

답변

1

망가 HybridDictionary를 사용합니다. 우리는 가지고있다 IReadOnlyDictionary<T>

private Dictionary<string, string> playersMuteStatus = new... ; 
public IReadOnlyDictionary<string, string> MuteStatuses 
{ 
    get 
    { 
     return playersMuteStatus as IReadOnlyDictionary<string, string>; 
    } 
} 
1

쓰기 도우미 방법 :

public static void AddMuteStatus() 
    => playersMuteStatus.Add("", ""); 

public static object GetMuteStatus(object idx) 
    => return playersMuteStatus[idx];