静态方法中c#对象的名称



我的问题是:我可以在静态类"classB"中定义一个静态方法"meth1",当从"classA"调用时,搜索特定字段(在"classA"中,而不是在定义的类中)?我试着更好地解释:我需要做这样的事情:

public class classA
{
  string someText;
  int anInt;
  bool trueOrFalse;
  public classA()
  {
    ...
    ...
    var variable = classB.meth1("variableName");
    ...
    ...
  }
}
public static classB
{
  public static object meth1(string name)
  {
  ...
  ... //use "name" to find the variable with that name in the class from which "meth1" is called.
  ...
  }
}

那是因为我必须读取。txt文件中包含的变量的"最后运行值"的备份,逐行写入"变量名称=值"。所以我读取。txt,创建一个包含("变量名";"值")的哈希表"backupHashtable",然后我想通过字符串"变量名"搜索变量,并将它们重置为"值"。如果你们中有人知道更好的程序,我在听。也许是使用字典?

谢谢!

更新

好了,现在我对我想做的事情有了更清晰的想法:我想实现一个类"ClassB",与我的主类"classA"分开。在这个新类中,我将有一个"meth1"方法,它在一个单独的线程中运行,每10秒保存一次(例如)属于"classA"的一些变量的状态。为了传达"meth1"他必须保存的变量是什么,我想使用一个包含这些变量名称的列表(格式为"字符串",这就是我的想法,但我想这不是唯一的方法)。

如果你想知道为什么我想在一个单独的线程中这样做,答案是这样的:我的应用程序执行一些识别操作,从多个摄像头的实时流图像中的一些对象,然后辅助操作必须尽可能地从主代码隔离,以提高执行速度。

现在,也许我刚才说的更容易理解了。

可以,但是您还需要传递a的实例的引用。然后使用反射来获取或设置属性。

public static void Meth1(object obj, string propertyName)
{
    var prop = obj.GetType().GetProperty(propertyName);
    var value = prop.GetValue(obj);
    ...
}

如果我要从一个文本文件中获取值到一个类中,我想我会首先将它们加载到一个字典中,然后逐一设置所有属性。(也许吧,除非有几百处房产)。当使用反射时,有可能文本文件中包含您不想从外部更改的属性的名称

object value;
if (dict.TryGetValue("someProperty", out value)) { a.SomeProperty = value; }

相关内容

  • 没有找到相关文章

最新更新