利用反射根据类名称获得相应类,自动识别处理类

 百家乐概况     |      2020-03-17 01:44
  • lom599乐百家手机 ,C# 自动识别管理类-获取多态类的运作时类名称
  • 百家了乐八大技巧 ,C# 自动识别管理类-利用反射依据类名称获得相应类
  • C# 自动识别管理类-自动获取类属性,并取值、其赋值
  • C# 自动识别管理类-反射示例
  • C# 自动识别管理类-获取多态类的运维时类名称
  • C# 自动识别管理类-利用反射依照类名称获得相应类
  • C# 自动识别管理类-自动获得类属性,并取值、其赋值


反射能够行使字符串来调用相关类的相关属性、方法。

C# 中,在使用工厂方式时,只怕会接受如下代码:

反射的基本是要收获类型,固然我们在类内部选择反射,能够直接采取GetType(State of Qatar 取得本类的连串。

if (className == "C1") { c = new C1(); } else if (className == "C2") { c = new C2(); }

GetType().InvokeMember("Calculate_" + Key, BindingFlags.InvokeMethod, null, this, null);

我们都不赏识这样不断地 if,有未有依据类的名目,直接就收获相应的类的吗?

如上,调用本类中的 Calculate_XXX 方法,至于 XXX 是怎么着,由传入的 Key 决定。这里面有一个this,表示前段时间指标的法子(因为不是静态方法,所以须要对象)。

有。

只要不是调用方法,而是得到属性的话,使用相同如下:

先是写多少个类,用于演示

PropertyInfo[] pis = obj.GetType(卡塔尔.GetProperties(卡塔尔(قطر‎; // 循环每二个属性 foreach (var pi in pis卡塔尔 { // pi.GetType(State of Qatar并不是指那那个性情的连串,而是指 pi 类型(每种世袭自 object 的都有那些主意)。 if (pi.PropertyType == typeof(stringState of Qatar卡塔尔(قطر‎ { // 取值 string value = (string卡塔尔pi.GetValue(obj, null卡塔尔(قطر‎; // 赋值 pi.SetValue(obj, newValue, null卡塔尔(قطر‎; } }

namespace Cftea { public abstract class C { public string Greeting { get; set; } public abstract string GetFullGreeting(State of Qatar; } public class C1 : C { public override string GetFullGreeting(卡塔尔 { return Greeting + "www.itpow.com"; } } public class C2 : C { public C2(卡塔尔国 { } public C2(string greeting卡塔尔(قطر‎ { Greeting = greeting; } public override string GetFullGreeting(卡塔尔国 { return "千一网络。" + Greeting; } } }