【发布时间】:2023-04-07 06:01:01
【问题描述】:
我有很多课程,叫他们Class1、Class2、...等等。这些类中的每一个都有两个变量TestDictionary 和TestListDictionary,如下所示。这些类中的每一个还从另一个类OtherClass 调用方法DoWork(),并传入一个包含类名称的字符串("Class1", "Class2", ...)。
public class Class1
{
public static Dictionary<string, string> TestDictionary = ...
public static ListDictionary TestListDictionary
...
OtherClass.DoWork(GetType().Name);
}
我希望函数DoWork 能够访问TestDictionary 和TestListDictionary 这两个变量。我想过做以下事情:
DoWork(string className)
{
var newClass = Activator.CreateInstance(Type.GetType(className));
var newDictionary = newClass.TestDictionary;
var newListDictionary = newClass.TestListDictionary;
...
}
但我无法访问TestDictionary 和TestListDictionary(错误“无法解析符号'TestDictionary'/'TestListDictionary')。
假设由于各种原因,我无法将这两个变量直接传递给DoWork 函数。我将如何访问它们?
编辑:我尝试删除 static 关键字,但仍然遇到相同的错误。
【问题讨论】:
-
传入类名对我来说似乎是一种代码味道。使用继承可能是更好的设计方式
-
我希望能够访问
TestDictionary和TestListDictionary在每个Class1、Class2等实例中的任何值。 -
我明白了。我尝试删除
static关键字,但仍然有同样的错误。 -
不清楚您要做什么。您尝试从哪个类访问 TestDictionary 的哪个实例? DoWork() 是如何被调用的? “OtherClass”指的是什么?
-
从 1 到 n 的每个类都有一个 TestDictionary 实例。 DoWork 是OtherClass 中的一个方法,在1 到n 的每个类中调用,并且需要引用该类的TestDictionary 和TestListDictionary 实例。这样就清楚了吗?
标签: c# class instance-variables