summaryrefslogtreecommitdiff
path: root/StardewModdingAPI/Extensions.cs
diff options
context:
space:
mode:
authorZoryn Aaron <zoryn4163@gmail.com>2016-03-21 21:07:37 -0400
committerZoryn Aaron <zoryn4163@gmail.com>2016-03-21 21:07:37 -0400
commitc73c1a0ec779228015a2f70f8a14a353f32664e2 (patch)
tree198e2e864a2371530735c2c4506d077a709422c4 /StardewModdingAPI/Extensions.cs
parent78609647e9e5ed6310942eaf104f495353e328e3 (diff)
parent46d21e384e3075b5352e20733f31e61d929d561a (diff)
downloadSMAPI-c73c1a0ec779228015a2f70f8a14a353f32664e2.tar.gz
SMAPI-c73c1a0ec779228015a2f70f8a14a353f32664e2.tar.bz2
SMAPI-c73c1a0ec779228015a2f70f8a14a353f32664e2.zip
Merge branch 'master'
Diffstat (limited to 'StardewModdingAPI/Extensions.cs')
-rw-r--r--StardewModdingAPI/Extensions.cs39
1 files changed, 38 insertions, 1 deletions
diff --git a/StardewModdingAPI/Extensions.cs b/StardewModdingAPI/Extensions.cs
index c504f470..d4b582b7 100644
--- a/StardewModdingAPI/Extensions.cs
+++ b/StardewModdingAPI/Extensions.cs
@@ -2,6 +2,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xna.Framework;
@@ -59,6 +60,42 @@ namespace StardewModdingAPI
hash ^= v.GetHashCode();
}
return hash;
- }
+ }
+
+ public static T Cast<T>(this object o) where T : class
+ {
+ return o as T;
+ }
+
+ public static FieldInfo[] GetPrivateFields(this object o)
+ {
+ return o.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic);
+ }
+
+ public static FieldInfo GetBaseFieldInfo(this Type t, string name)
+ {
+ return t.GetField(name, BindingFlags.Instance | BindingFlags.NonPublic);
+ }
+
+ public static T GetBaseFieldValue<T>(this Type t, object o, string name) where T : class
+ {
+ return t.GetBaseFieldInfo(name).GetValue(o) as T;
+ }
+
+ /*
+ public static T GetBaseFieldValue<T>(this object o, string name) where T : class
+ {
+ return o.GetType().GetBaseFieldInfo(name).GetValue(o) as T;
+ }*/
+
+ public static object GetBaseFieldValue(this object o, string name)
+ {
+ return o.GetType().GetBaseFieldInfo(name).GetValue(o);
+ }
+
+ public static void SetBaseFieldValue (this object o, string name, object newValue)
+ {
+ o.GetType().GetBaseFieldInfo(name).SetValue(o, newValue);
+ }
}
} \ No newline at end of file