diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-12-10 18:05:18 -0500 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-12-10 18:05:18 -0500 |
commit | 8776d1afa6dce054f3bc7cb421c86f3e2fe06ab3 (patch) | |
tree | 506b4f8487aaba8f5ea5e3e94795308b82a0a7ca /src/SMAPI/Framework/Reflection/PrivateField.cs | |
parent | 80c4d93559989777fbe5a23b923155b93df7a715 (diff) | |
download | SMAPI-8776d1afa6dce054f3bc7cb421c86f3e2fe06ab3.tar.gz SMAPI-8776d1afa6dce054f3bc7cb421c86f3e2fe06ab3.tar.bz2 SMAPI-8776d1afa6dce054f3bc7cb421c86f3e2fe06ab3.zip |
adjust reflection API to correctly reflect what it does (#410)
Diffstat (limited to 'src/SMAPI/Framework/Reflection/PrivateField.cs')
-rw-r--r-- | src/SMAPI/Framework/Reflection/PrivateField.cs | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/src/SMAPI/Framework/Reflection/PrivateField.cs b/src/SMAPI/Framework/Reflection/PrivateField.cs deleted file mode 100644 index 0bf45969..00000000 --- a/src/SMAPI/Framework/Reflection/PrivateField.cs +++ /dev/null @@ -1,93 +0,0 @@ -using System; -using System.Reflection; - -namespace StardewModdingAPI.Framework.Reflection -{ - /// <summary>A private field obtained through reflection.</summary> - /// <typeparam name="TValue">The field value type.</typeparam> - internal class PrivateField<TValue> : IPrivateField<TValue> - { - /********* - ** Properties - *********/ - /// <summary>The type that has the field.</summary> - private readonly Type ParentType; - - /// <summary>The object that has the instance field (if applicable).</summary> - private readonly object Parent; - - /// <summary>The display name shown in error messages.</summary> - private string DisplayName => $"{this.ParentType.FullName}::{this.FieldInfo.Name}"; - - - /********* - ** Accessors - *********/ - /// <summary>The reflection metadata.</summary> - public FieldInfo FieldInfo { get; } - - - /********* - ** Public methods - *********/ - /// <summary>Construct an instance.</summary> - /// <param name="parentType">The type that has the field.</param> - /// <param name="obj">The object that has the instance field (if applicable).</param> - /// <param name="field">The reflection metadata.</param> - /// <param name="isStatic">Whether the field is static.</param> - /// <exception cref="ArgumentNullException">The <paramref name="parentType"/> or <paramref name="field"/> is null.</exception> - /// <exception cref="ArgumentException">The <paramref name="obj"/> is null for a non-static field, or not null for a static field.</exception> - public PrivateField(Type parentType, object obj, FieldInfo field, bool isStatic) - { - // validate - if (parentType == null) - throw new ArgumentNullException(nameof(parentType)); - if (field == null) - throw new ArgumentNullException(nameof(field)); - if (isStatic && obj != null) - throw new ArgumentException("A static field cannot have an object instance."); - if (!isStatic && obj == null) - throw new ArgumentException("A non-static field must have an object instance."); - - // save - this.ParentType = parentType; - this.Parent = obj; - this.FieldInfo = field; - } - - /// <summary>Get the field value.</summary> - public TValue GetValue() - { - try - { - return (TValue)this.FieldInfo.GetValue(this.Parent); - } - catch (InvalidCastException) - { - throw new InvalidCastException($"Can't convert the private {this.DisplayName} field from {this.FieldInfo.FieldType.FullName} to {typeof(TValue).FullName}."); - } - catch (Exception ex) - { - throw new Exception($"Couldn't get the value of the private {this.DisplayName} field", ex); - } - } - - /// <summary>Set the field value.</summary> - //// <param name="value">The value to set.</param> - public void SetValue(TValue value) - { - try - { - this.FieldInfo.SetValue(this.Parent, value); - } - catch (InvalidCastException) - { - throw new InvalidCastException($"Can't assign the private {this.DisplayName} field a {typeof(TValue).FullName} value, must be compatible with {this.FieldInfo.FieldType.FullName}."); - } - catch (Exception ex) - { - throw new Exception($"Couldn't set the value of the private {this.DisplayName} field", ex); - } - } - } -} |