0

我的问题是:我可以在静态类“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”他必须保存的变量是什么,我想使用一个包含这些变量的名称(格式为“字符串”,这就是我的想法,但我想这不是唯一的方法)的列表.

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

现在,也许,我之前所说的更容易理解了。

4

1 回答 1

1

是的,但是你还需要传递一个对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; }
于 2016-11-16T15:44:31.837 回答