我的问题是:我可以在静态类"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; }