bring in useful InvokeMethod functionality from MBS.Framework.UI
This commit is contained in:
parent
f3f9cf47f2
commit
2da999008c
@ -24,7 +24,7 @@ using System.Reflection;
|
|||||||
|
|
||||||
namespace MBS.Framework
|
namespace MBS.Framework
|
||||||
{
|
{
|
||||||
public class Reflection
|
public static class Reflection
|
||||||
{
|
{
|
||||||
public class ManifestResourceStream
|
public class ManifestResourceStream
|
||||||
{
|
{
|
||||||
@ -168,10 +168,10 @@ namespace MBS.Framework
|
|||||||
catch (ReflectionTypeLoadException ex)
|
catch (ReflectionTypeLoadException ex)
|
||||||
{
|
{
|
||||||
Console.Error.WriteLine("ReflectionTypeLoadException(" + ex.LoaderExceptions.Length.ToString() + "): " + asm.FullName);
|
Console.Error.WriteLine("ReflectionTypeLoadException(" + ex.LoaderExceptions.Length.ToString() + "): " + asm.FullName);
|
||||||
for (int i = 0; i < ex.LoaderExceptions.Length; i++)
|
for (int i = 0; i < ex.LoaderExceptions.Length; i++)
|
||||||
{
|
{
|
||||||
Console.Error.WriteLine("\t" + ex.LoaderExceptions[i].Message);
|
Console.Error.WriteLine("\t" + ex.LoaderExceptions[i].Message);
|
||||||
Console.Error.WriteLine();
|
Console.Error.WriteLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
types1 = ex.Types;
|
types1 = ex.Types;
|
||||||
@ -272,5 +272,44 @@ namespace MBS.Framework
|
|||||||
|
|
||||||
return default(T);
|
return default(T);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void InvokeMethod(object obj, string meth, params object[] parms)
|
||||||
|
{
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Engine::InvokeMethod: obj is null");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Type t = obj.GetType();
|
||||||
|
System.Reflection.MethodInfo mi = t.GetMethod(meth, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
|
||||||
|
if (mi != null)
|
||||||
|
{
|
||||||
|
mi.Invoke(obj, parms);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("Engine::InvokeMethod: method not found '" + meth + "' on '" + t.FullName + "'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void InvokeMethod(Type type, string meth, params object[] parms)
|
||||||
|
{
|
||||||
|
if (type == null)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Engine::InvokeMethod: obj is null");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Type t = type;
|
||||||
|
System.Reflection.MethodInfo mi = t.GetMethod(meth, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
|
||||||
|
if (mi != null)
|
||||||
|
{
|
||||||
|
mi.Invoke(null, parms);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("Engine::InvokeMethod: static method not found '" + meth + "' on '" + t.FullName + "'");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user