Zatem poniższy kod, pomimo swojej przejrzystości nie wystarczy, aby ustawić domyślne wartości dla properties.
using System; using CM = System.ComponentModel; namespace DefaultValueAttribute { public class MySimpleClass { [CM.DefaultValue(true)] public bool MyBoolProperty { get; set; } [CM.DefaultValue(8)] public int MyIntProperty { get; set; } [CM.DefaultValue("Default text")] public string MyStringProperty { get; set; } } }
Aby móc skorzystać z możliwości ustawiania wartości domyślnych poprzez atrybuty, wystarczy skorzystać z poniższej ExtensionMethod.
public static class Extensions { public static void ApplyDefaultValues(this object obj) { foreach (CM.PropertyDescriptor prop in CM.TypeDescriptor.GetProperties(obj)) { var attr = (CM.DefaultValueAttribute) prop.Attributes[typeof (CM.DefaultValueAttribute)]; { prop.SetValue(obj, attr.Value); } } } }
Wywoływać ją można np. w konstruktorze.
Brak komentarzy:
Prześlij komentarz