c#通过另一个类和方法的动态名称调用类成员(属性,方法等)

时间:2014-12-28 06:44:58

标签: c# class reflection call

当我不知道班级名称时,如何为班级成员打电话然后使用(设定值)?

为了最好地理解,让我举例说明,我的意思是:

例如我有课程:

static class ClassA {
    public static string Property1;
    public static bool Property2;
    public static async Task<bool> Method () {
     // ... 
     await Worker.Do();
     return true;
    } 
}

static class Worked {
   public static async Task<bool> Do() {
     // ... 
     var CallerClassName = new StackTrace().GetFrame(1).GetMethod().ReflectedType.Name;

     // setup value for caller class Property 1 = "test";
     // Like ClassA.Property1 = "test"; but using dynamic name;
     // setup value for caller class Property 2 = true;
     // Like ClassA.Property2 = true; but using dynamic name;
   }
}

我应该说,我知道那些属性存在于Caller类中,如果我不知道它的类调用者名称,我不知道如何动态地设置它们的名字。 另外我应该说所有这些方法,属性和类都是静态的。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

不要这样做。 | 你的类不应该是静态的。如果它们具有相同的meothds / properties,它们应该从同一个接口继承。

如果你真的坚持,你可以使用反射Set object property using reflection