C#:如何通过存储在字符串中的名称获取对象?

C#:如何通过存储在字符串中的名称获取对象?,c#,.net,reflection,C#,.net,Reflection,在C#中是否可以按名称获取对象 i、 e.使用 string objectName = "obj0"; executeSomeFunctionOnObject(this.someLoadObjectByName(objectName)); 不,不是 对象没有名称,变量有名称。一个对象可以被任意数量的变量引用:零、一或多 但是,您可以通过名称(使用)获取字段(静态或实例变量),并获取这些字段的值(对于特定实例,如果您使用实例变量) 取决于您想做什么,您可能还需要考虑从名称到对象的字典。 < P>

在C#中是否可以按名称获取对象

i、 e.使用

string objectName = "obj0";
executeSomeFunctionOnObject(this.someLoadObjectByName(objectName));
不,不是

对象没有名称,变量有名称。一个对象可以被任意数量的变量引用:零、一或多

但是,您可以通过名称(使用)获取字段(静态或实例变量),并获取这些字段的值(对于特定实例,如果您使用实例变量)


取决于您想做什么,您可能还需要考虑从名称到对象的字典。

< P>不,并非所有对象都有名称属性(对于初学者)。


但是您可以将感兴趣的对象存储在
字典中。您还可以按名称获取控件,具体方法取决于UI库。

您不能按名称访问对象。不过,通过使用反射,您可以创建类的所有字段和属性(如果需要,可以按名称)。如果对象存储在字段级变量或属性中,则这将为您提供所需的:

Type myType = typeof(MyClass);
FieldInfo[] myFields = myType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);

PropertyInfo[] myproperties = myType.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
您还可以调用GetField和GetProperty(单数),并传入一个字符串,使其返回一个与该名称匹配的成员(确保检查null)

有关在这种情况下使用反射方法的更多信息,请阅读以下页面:


我想你要找的是

您可以在这里看到一个很好的示例:

如前所述-对象没有名称,但您可以遍历对象并获取其类型并相应地执行操作

这个博客展示了遍历和使用反射的一个很好的例子

这肯定是一个好的开始。
享受吧

你能举例说明这个名字应该如何映射到这个对象吗?您是在寻找对象实例还是类型?你想要现有的实例,还是创建新的实例?很少有人明确地说不,这是不可能的,这样你就可以继续前进,看看不同的方法。谢谢