using System; using System.ComponentModel; using System.Reflection; using ANX.Framework.NonXNA.Development; // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. // For details see: http://anxframework.codeplex.com/license namespace ANX.Framework.Design { #if !WINDOWSMETRO [Developer("AstrorEnales")] [TestState(TestStateAttribute.TestState.Untested)] public class ANXFieldDescriptor : PropertyDescriptor { private FieldInfo field; public override Type ComponentType { get { return field.DeclaringType; } } public override bool IsReadOnly { get { return false; } } public override Type PropertyType { get { return field.FieldType; } } public ANXFieldDescriptor(FieldInfo field) : base(field.Name, (Attribute[])field.GetCustomAttributes(typeof(Attribute), true)) { if (field == null) throw new ArgumentNullException("field"); this.field = field; } public override bool CanResetValue(object component) { return false; } public override object GetValue(object component) { return field.GetValue(component); } public override void ResetValue(object component) { } public override void SetValue(object component, object value) { this.field.SetValue(component, value); this.OnValueChanged(component, EventArgs.Empty); } public override bool ShouldSerializeValue(object component) { return true; } } #endif }