From 929dccb75a1405737975d76648e015a3e7c00177 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sat, 7 Oct 2017 23:07:10 -0400 Subject: reorganise repo structure --- .../Framework/Reflection/PrivateProperty.cs | 93 ---------------------- 1 file changed, 93 deletions(-) delete mode 100644 src/StardewModdingAPI/Framework/Reflection/PrivateProperty.cs (limited to 'src/StardewModdingAPI/Framework/Reflection/PrivateProperty.cs') diff --git a/src/StardewModdingAPI/Framework/Reflection/PrivateProperty.cs b/src/StardewModdingAPI/Framework/Reflection/PrivateProperty.cs deleted file mode 100644 index 08204b7e..00000000 --- a/src/StardewModdingAPI/Framework/Reflection/PrivateProperty.cs +++ /dev/null @@ -1,93 +0,0 @@ -using System; -using System.Reflection; - -namespace StardewModdingAPI.Framework.Reflection -{ - /// A private property obtained through reflection. - /// The property value type. - internal class PrivateProperty : IPrivateProperty - { - /********* - ** Properties - *********/ - /// The type that has the field. - private readonly Type ParentType; - - /// The object that has the instance field (if applicable). - private readonly object Parent; - - /// The display name shown in error messages. - private string DisplayName => $"{this.ParentType.FullName}::{this.PropertyInfo.Name}"; - - - /********* - ** Accessors - *********/ - /// The reflection metadata. - public PropertyInfo PropertyInfo { get; } - - - /********* - ** Public methods - *********/ - /// Construct an instance. - /// The type that has the field. - /// The object that has the instance field (if applicable). - /// The reflection metadata. - /// Whether the field is static. - /// The or is null. - /// The is null for a non-static field, or not null for a static field. - public PrivateProperty(Type parentType, object obj, PropertyInfo property, bool isStatic) - { - // validate - if (parentType == null) - throw new ArgumentNullException(nameof(parentType)); - if (property == null) - throw new ArgumentNullException(nameof(property)); - if (isStatic && obj != null) - throw new ArgumentException("A static property cannot have an object instance."); - if (!isStatic && obj == null) - throw new ArgumentException("A non-static property must have an object instance."); - - // save - this.ParentType = parentType; - this.Parent = obj; - this.PropertyInfo = property; - } - - /// Get the property value. - public TValue GetValue() - { - try - { - return (TValue)this.PropertyInfo.GetValue(this.Parent); - } - catch (InvalidCastException) - { - throw new InvalidCastException($"Can't convert the private {this.DisplayName} property from {this.PropertyInfo.PropertyType.FullName} to {typeof(TValue).FullName}."); - } - catch (Exception ex) - { - throw new Exception($"Couldn't get the value of the private {this.DisplayName} property", ex); - } - } - - /// Set the property value. - //// The value to set. - public void SetValue(TValue value) - { - try - { - this.PropertyInfo.SetValue(this.Parent, value); - } - catch (InvalidCastException) - { - throw new InvalidCastException($"Can't assign the private {this.DisplayName} property a {typeof(TValue).FullName} value, must be compatible with {this.PropertyInfo.PropertyType.FullName}."); - } - catch (Exception ex) - { - throw new Exception($"Couldn't set the value of the private {this.DisplayName} property", ex); - } - } - } -} -- cgit