Ok, zrobiłem tak jak polecał somekind. Mam jeszcze takie dwa pytania jako początkujący. Załóżmy, że mam swego rodzaju słowniki jak poniżej (podaję kod z SNMP i ma mi to zwrócić ResponseDescription czyli opis oraz typ wyliczeniowy sugerujący czy wszystko jest ok).
- Czy można w jakiś sposób skrócić te metody poniżej, żeby nie klepać każdej osobno dla każdego ze słowników?
- Załóżmy, że chciałbym sobie tą klasę zlokalizować (zrobić jedynie opisy angielskie, a polskie w resources) i wstrzyknąć tu IStringLocalizer. Czy taka konstrukcja łańcuchowa, gdzie IStringLocalizer używam w IResponseDescriptionDictionaries, a to z kolei wstrzykuję sobie w inne miejsce jest poprawne z punktu widzenia programowanie i używani DI?
public class ResponseDescriptionDictionaries : IResponseDescriptionDictionaries
{
private const int _uknownResponseCode = 255;
// ONT Block Status
// 1 - autoblock
// 2 - manual block
// 255 - unblock
readonly Dictionary<int?, ResponseDescription> BlockStatusResponseDictionary = new Dictionary<int?, ResponseDescription>()
{
{ 1, new ResponseDescription("autoblock", "blokada automatyczna", SeverityLevel.Danger) },
{ 2, new ResponseDescription("manual block", "blokada ręczna", SeverityLevel.Danger) },
{ 255, new ResponseDescription("unblock", "brak blokady", SeverityLevel.Success) }
};
// ONT Block Reason
// 1 - manual block
// 2 - sourcemac block
// 255 - unblock
readonly Dictionary<int?, ResponseDescription> BlockReasonResponseDictionary = new Dictionary<int?, ResponseDescription>()
{
{ 1, new ResponseDescription("manual block", "blokada ręczna", SeverityLevel.Danger) },
{ 2, new ResponseDescription("sourcemac block", "blokada sourcemac", SeverityLevel.Danger) },
{ 255, new ResponseDescription("unblock", "brak blokady", SeverityLevel.Success) }
};
ResponseDescription IResponseDescriptionDictionaries.BlockStatusResponse(int responseCode)
{
ResponseDescription _responseDescription;
if (BlockStatusResponseDictionary.ContainsKey(responseCode))
{
BlockStatusResponseDictionary.TryGetValue(responseCode, out _responseDescription);
}
else
{
BlockStatusResponseDictionary.TryGetValue(_uknownResponseCode, out _responseDescription);
}
return _responseDescription;
}
ResponseDescription IResponseDescriptionDictionaries.BlockReasonResponse(int responseCode)
{
ResponseDescription _responseDescription;
if (BlockReasonResponseDictionary.ContainsKey(responseCode))
{
BlockReasonResponseDictionary.TryGetValue(responseCode, out _responseDescription);
}
else
{
BlockReasonResponseDictionary.TryGetValue(_uknownResponseCode, out _responseDescription);
}
return _responseDescription;
}
}