【发布时间】:2015-07-15 17:28:23
【问题描述】:
假设我有 3 个班级:
主类,A类,B类
假设 B 类有一个方法需要来自 A 类的数据。(数据实际上是一个数据视图对象)。
A 类和 B 类的对象实例在主类中创建,与上述无关(一般都会创建)
从 B 类到达 A 类的数据视图对象的最佳方法是什么?
我应该将 dataview 对象设为内部吗?我应该让它静态吗?我应该让它内部静态吗?
我已经学会在这样的情况下创建属性并只是“获取”对象,但由于它是创建 A 类对象的主要形式(而不是 B 类),我无法从B类。
编辑,这是一段演示代码:
Class Main
{
A a = new A();
B b = new B();
a.doingAClassStuff(); //Not possible unless Class A is set to public or the method is set to internal (classes are internal by default)
b.doingBClassStuff(); //Likewise
//need to get the dv object here.
//dv.rows[1].foo = bar;
}
在上面的主类中,我需要从 B 类中获取 dv 对象。
//each class exist in a different class file (.cs file) inside the project
Class A
{
doingAClassStuff()
{
MessageBox.Show("Hello From Class A!");
}
//here access to the dv object is also needed.
//dv.rows[5].foo = something;
}
A类也需要获取B类的dv对象!
//in another file as well
Class B
{
DataView dv = new Dataview(datatable1)
doingBClassStuff()
{
MessageBox.Show("Hello From Class B!");
}
}
我的笔记:
仅将“dv”设置为“内部”不会使其可见。
使“dv”“内部静态”使其可见,我可以使用它,但我不确定“静态”没有缺点,我不会为每个类创建超过 1 个实例(如果事项)。
-
我尝试使用“get”设置属性并获取它,但由于属性是公开的,我无法将它们设置为“内部”,它们是否也对程序集外部公开?
非常感谢!
【问题讨论】:
-
很难理解你在做什么......举一个更具体的例子......一段代码可以帮助很多
-
@FlorianSchmidinger 我已经添加了代码。我已经编辑了问题并添加了代码。谢谢!