高级别:我有一个A类,其变量定义为"让_somevar"。 我正在寻找从另一个类B中为这个变量赋值的方法。
细节涉及更多: A类包含一个延迟加载某个模块的初始化方法,它有一个变量" _somevar"它保存了延迟加载的模块。 A类还有一些公共方法,用于检查此变量是否为null,并相应地执行。
现在,B类提供了一个初始化函数,用于同步/直接(不是延迟加载)加载模块。问题是来自A类的公共方法现在不会运行,因为" _somevar"没有设定。所以我试图从B类中设置它,以便仍然可以使用A类中的公共方法。
我知道可以对这些类进行大量的重构。但我并不拥有代码库,我试图在此处进行最少的代码更改以使其正常工作。
我很乐意听取你的建议。谢谢!
答案 0 :(得分:1)
无法访问另一个类中的变量。
您可以访问公共成员,例如属性和方法。
如果扩展类,子类可以访问受保护的成员。
以下是一些解决方案,其中两个将变量提升为属性。另一个没有。
如果ClassA
依赖于somevar
的初始化,它可以通过在其构造函数中要求依赖项来使依赖项显式化。这样,在提供依赖关系之前,您无法调用使用依赖关系的方法。
class Example {
constructor(private somevar: SomeVar) {
}
myMethod() {
this._somevar.doSomething();
}
}
如果您正在进行一项严格的修改以修复问题,则可以添加一个接受依赖项的方法:
setDependency(somevar: SomeVar) {
this.somevar = somevar;
}
然后,您可以在使用当前失败的方法之前调用此方法。然而,这是时间耦合的一种形式。需要在调用setDependency
之前调用myMethod
。
未初始化依赖项时失败的方法可以更改为需要依赖项...
例如,这个:
myMethod() {
this._somevar.doSomething();
}
成为这个:
myMethod(somevar: SomeVar) {
somevar.doSomething();
}