public static class StaticHolder { public static Object Hold { get; set; } } public static class StaticHolder<T1> { public static T1 Hold { get; set; } } public static class StaticHolder<T1, T2> { public static T1 Hold { get; set; } } public static class StaticHolder<T1, T2, T3> { public static T1 Hold { get; set; } }Do podstawowej klasy zostały stworzone generyczne typy. Zastosowanie StaticHolder przedstawione jest w tym kodzie:
StaticHolder.Hold = 1; //zapisane do obiektu 1 StaticHolder.Hold = "Text 1"; //zamiast 1 jest "Text 1" StaticHolder<int>.Hold = 2; StaticHolder<string>.Hold = "Text 2"; //jest rozróżnienie między int a string StaticHolder<int, int>.Hold = 3; StaticHolder<string, int>.Hold = "Text 3"; bool equals = StaticHolder<int, string>.Hold .Equals(StaticHolder<int, int>.Hold); //false, StaticHolder<int, string> != StaticHolder<int, int> // drugi typ generyczny wprowadza dodatkowe rozróżnienie equals = StaticHolder<string, int>.Hold .Equals(StaticHolder<string, int>.Hold); // rozróżnienie dla poniższych StaticHolder StaticHolder<int, int>.Hold = 4; StaticHolder<int, string>.Hold = 5; StaticHolder<int, decimal>.Hold = 6; StaticHolder<int, EncodingInfo>.Hold = 7; StaticHolder<int, List<int>>.Hold = 8; StaticHolder<int, List<string>>.Hold = 9;
Nie wiem czy taki tok myślenia już ktoś nazwał i opisał. Możliwe, że jest on nazwany pod inną nazwą. Ja na ten mechanizm nazywam "StaticHolder Pattern". Z poniższego źródła można pobrać kod:
Brak komentarzy:
Prześlij komentarz