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

Dont использовать 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];