C# implement late binding via type in runtime,dynamically call method via type.GetMethod() and parameters type array

static void RuntimeGetTypeLateBinding()
{
    object s = "Hello";
    PropertyInfo pi = s.GetType().GetProperty("Length");
    Console.WriteLine((int)pi.GetValue(s, null));
}

 

 

Dynamically call method GetMethod() via  reflection and late binding in runtime

1
2
3
4
5
6
7
8
9
static void MethodParametersDemo()
{
    Type type = typeof(string);
    Type[] paraTypes = { typeof(int) };
    MethodInfo mi=type.GetMethod ("Substring",paraTypes);
    Object[] arguments = { 2 };
    object returnValue = mi.Invoke("Meditation", arguments);
    Console.WriteLine(returnValue);
}

  

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static void TypeRetrieveInvokeGenericMethods()
{
    var result = from m in typeof(Enumerable).GetMethods()
                 where m.Name == "Where" && m.IsGenericMethod
                 let parameters = m.GetParameters()
                 where parameters.Length == 2
                 let genArg = m.GetGenericArguments().First()
                 let enumerableOfT = typeof(IEnumerable<>).MakeGenericType(genArg)
                 let funcOfTBool = typeof(Func<,>).MakeGenericType(genArg, typeof(bool))
                 where parameters[0].ParameterType == enumerableOfT
                 && parameters[1].ParameterType == funcOfTBool
                 select m;
 
    foreach(var mi in result)
    {
        Console.WriteLine($"{mi.Name},{mi.ReturnParameter}");
    }
}

  

 

 

posted @   FredGrit  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2021-03-08 C# quick sort
点击右上角即可分享
微信分享提示