如何从内部类访问属性值,请参阅下文?
namespace N1
{
public class ClassA
{
string var1 = null;
private ClassB b;
public ClassA()
{
var1 = "one";
b = new ClassB();
}
//property
public string Var1
{
get{ return var1; }
}
}
namespace N1
{
internal class ClassB
{
private void method()
{
// I need to access the value of Var1( property) from here, how to do this?
}
}
}
答案 0 :(得分:1)
将ClassA的实例传递给ClassB的构造函数:
namespace N1
{
internal class ClassB
{
private ClassA _classAInstance;
public void ClassB(ClassA classAInstance)
{
_classAInstance = classAInstance;
}
private void method()
{
// You can access _classAInstance properties here
}
}
}
更新:我错过了ClassB实例b是ClassA上的私有成员。使用我之前的答案,您可以在ClassA的构造函数中实例化b:
public ClassA()
{
var1 = "one";
b = new ClassB(this);
}
答案 1 :(得分:0)
有两种方法:
ClassB.Method
的访问修饰符更改为公开,并使其采用字符串参数。ClassB
的构造函数以获取字符串参数并将其存储在私有字段中。ClassB
。创建类internal
只意味着该类仅适用于同一程序集中的文件。
答案 2 :(得分:0)
您需要对A类实例的引用。
因此要么改变B类构造函数来接受对A类的引用
namespace N1
{
public class ClassA
{
string var1 = null;
private ClassB b;
public ClassA()
{
var1 = "one";
b = new ClassB(this);
}
//property
public string Var1
{
get { return var1; }
}
}
}
namespace N1
{
internal class ClassB
{
ClassA classA;
public ClassB(ClassA classARef)
{
classA = classARef;
}
private void method()
{
// I need to access the value of Var1( property) from here, how to do this?
string myString = classA.Var1;
}
}
}
或使ClassB的私有方法()接受一个字符串? private void method(string classAVar1)
或使ClassA静态(哈哈)
答案 3 :(得分:-2)
你做不到。更改A类或B类的访问修饰符。 内部类的目的是包含一些内部逻辑实现,如果您需要从中访问公共类的字段,那么应用程序设计可能出现问题