thi*_*eek 4 generics reflection extension-methods c#-3.0
我为DataRow对象创建了一个通用扩展方法.该方法不需要参数.我想通过Reflection使用MethodInfo调用Generic方法.我可以为Normarl公共方法做到这一点,但不知怎的,我无法获得Generic Extension方法的引用.
Sam*_*ron 11
请记住,扩展方法是编译器技巧.如果在定义扩展方法的静态类上查找静态方法,则可以很好地调用它.
现在,如果您拥有的只是一个对象并且您正在尝试查找特定的扩展方法,则可以通过在app域中搜索所有静态类来查找具有System.Runtime.CompilerServices.ExtensionAttribute该特定方法名称和参数序列的方法,从而找到所讨论的扩展方法有问题.
如果两个扩展类定义具有相同名称和签名的扩展方法,则该方法将失败.如果程序集未在应用程序域中加载,它也将失败.
简单的方法就是这样(假设您正在寻找一种通用方法):
static class Extensions {
public static T Echo<T>(this T obj) {
return obj;
}
}
class Program {
static void Main(string[] args) {
Console.WriteLine("hello".Echo());
var mi = typeof(Extensions).GetMethod("Echo");
var generic = mi.MakeGenericMethod(typeof(string));
Console.WriteLine(generic.Invoke(null, new object[] { "hello" }));
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2518 次 |
| 最近记录: |