Initial commit
This commit is contained in:
commit
0afdc1d02f
93 changed files with 2453 additions and 0 deletions
34
X.cs
Normal file
34
X.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
using System;
|
||||
using System.Reflection;
|
||||
using UnityEngine;
|
||||
|
||||
namespace CurrencyChanger2
|
||||
{
|
||||
public static class X
|
||||
{
|
||||
public static T CopyPropertiesOf<T>(this T comp, T other) where T : Component
|
||||
{
|
||||
Type type = comp.GetType();
|
||||
if (type != other.GetType()) return null; // type mis-match
|
||||
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Default | BindingFlags.DeclaredOnly;
|
||||
PropertyInfo[] pinfos = type.GetProperties(flags);
|
||||
foreach (var pinfo in pinfos)
|
||||
{
|
||||
if (pinfo.CanWrite)
|
||||
{
|
||||
try
|
||||
{
|
||||
pinfo.SetValue(comp, pinfo.GetValue(other, null), null);
|
||||
}
|
||||
catch { } // In case of NotImplementedException being thrown. For some reason specifying that exception didn't seem to catch it, so I didn't catch anything specific.
|
||||
}
|
||||
}
|
||||
FieldInfo[] finfos = type.GetFields(flags);
|
||||
foreach (var finfo in finfos)
|
||||
{
|
||||
finfo.SetValue(comp, finfo.GetValue(other));
|
||||
}
|
||||
return comp as T;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue