我们说我有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"设置属性并得到它,但由于属性是公开的,我无法将它们设置为"内部"他们是否也向集会外公开?
非常感谢!
答案 0 :(得分:1)
如果没有关于您的要求和限制的任何其他信息,我将采用这种方式。
如果Class A
需要Class B
才能正常运行,您应该向Class B
提供Class A
成员,并在{{1}的构造函数中对其进行初始化或者提供一种设置成员的方法。
Class B
应该通过其公共接口公开Class A
所需要的方式,这对于类是有意义的。即不要公开Class B
。
DataView
别处
public class A
{
private B _b;
public A(B b)
{
_b = b;
}
void UseData()
{
_b.GetData();
}
}
Public class B
{
public DataView GetData();
}
答案 1 :(得分:0)
我无法添加评论,但这似乎与以下帖子类似,要求相当于朋友。最佳答案是使用InternalsVisibleTo来实现类似的功能。
答案 2 :(得分:0)
从B类到达A类数据视图对象的最佳方法是什么?
一些选项:
A
的实例传递给B
B
类型的A
(如果该实例将用于多个操作我应该将dataview对象设为内部吗?我应该让它静止吗?我应该让它内部静止吗?
如果您希望所有类型在同一个程序集中可以访问 {<1}},而不是程序集的外部可以访问它(基本上是私有的装配
如果希望程序集内外的所有类型都可以使用它,请将其设为internal
如果数据适用于 public
的所有实例