diff --git a/Helpers/XGenericHelper.cs b/Helpers/XGenericHelper.cs
index 030696d..5961031 100644
--- a/Helpers/XGenericHelper.cs
+++ b/Helpers/XGenericHelper.cs
@@ -39,6 +39,39 @@ namespace xCommons.Helpers
genericMethod.Invoke(null, args);
}
+ ///
+ /// Invoke a Generic Method of Specified Type ...
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static void InvokeGenericMethod(
+ this Type source,
+ string methodName,
+ Type[] runtimeTypes,
+ params object[] args
+ )
+ {
+ //
+ var overLoads = source.GetGenericMethodInfo(
+ methodName: methodName
+ );
+ if (!overLoads.HasChild())
+ {
+ return;
+ }
+
+ //
+ // Detect a Method by Generic Types ...
+ // var method = overLoads.ElementAt(0);
+ var method = overLoads.First(m => m.GetGenericArguments().Length == runtimeTypes.Length);
+ MethodInfo genericMethod = method.MakeGenericMethod(runtimeTypes);
+
+ //
+ genericMethod.Invoke(null, args);
+ }
+
///
/// Extract a Generic Method's Overloads ...
///
diff --git a/Models/XServiceDescriptor.cs b/Models/XServiceDescriptor.cs
new file mode 100644
index 0000000..54502bd
--- /dev/null
+++ b/Models/XServiceDescriptor.cs
@@ -0,0 +1,19 @@
+using System;
+
+namespace xCommons.Models
+{
+ public class XServiceDescriptor
+ {
+ public Type Service { get; set; }
+ public Type Implementation { get; set; }
+ }
+
+ public class XServiceDescriptor : XServiceDescriptor
+ {
+ public XServiceDescriptor() : base()
+ {
+ Service = typeof(TService);
+ Implementation = typeof(TImplmentation);
+ }
+ }
+}
\ No newline at end of file