C# 需要课堂设计

C# 需要课堂设计,c#,.net,oop,C#,.net,Oop,我有两个班,A班和B班。 类A有一个方法,该方法创建类B的实例并使用该实例调用公共方法 B obj = new B(); obj.DoSomething(); 现在类B的DoSomething()方法有一个循环 public void DoSomething() { for(int i=1;i<=10;i++) { //Do some task //call a method of class A for this iteration

我有两个班,A班和B班。 类A有一个方法,该方法创建类B的实例并使用该实例调用公共方法

B obj = new B();
obj.DoSomething();
现在类B的DoSomething()方法有一个循环

public void DoSomething()
{
    for(int i=1;i<=10;i++)
    {
       //Do some task
       //call a method of class A for this iteration
    }
}
public void DoSomething()
{

对于(int i=1;i,根据您的程序逻辑,您可以使用
this
关键字传递对类A当前实例的引用


或者更改程序逻辑,使循环位于类A中。然后循环将调用类B中的方法;之后,类A中的调用方法调用迭代的适当方法。

问题是,不清楚
A
B
的依赖项还是
B
A
的依赖项。首先,我认为你必须定义这一方面。有了这一点,你的课程设计将更加自然流畅

因此,例如,如果您需要在
B
中使用
A
实例
DoSomething()
,您可以在
B
类中放置
A
成员:

public class B
{
    private A _aInstance;

    public B(A aInstance)
    {
        this._aInstance = aInstance;
    }

    public void DoSomething()
    {
        for(int i=1;i<=10;i++)
        {
           //Do some task
           _aInstance.DoSomethingOther();
        }
    }
}
公共B类
{
私人立场;
公共B(A站)
{
这个。_aInstance=aInstance;
}
公共无效剂量测定法()
{

对于(int i=1;我为什么不将
A
的原始实例作为
DoSomething
方法的参数传递?编辑:同样,基于有限的上下文很难说,但另一种可能性是要求
B
构造函数提供
A
的实例,并且
B
可以将该引用存储在priv中是((将实例传递给另一个类的方法或构造函数)这样做的正确方法?很难说是基于有限的上下文,但耦合类中的这种行为应该表明体系结构设计不好。如果责任设计得很好,B不应该依赖上层来正常工作。@TheKing,你能给我们多一点上下文吗?类a和B做什么?做什么o?将A的实例传递给B的方法/构造函数确实可以解决问题,但正如@jvaquero所说,您可能只是掩盖了一个设计缺陷。@jlvaquero,这可能是一个糟糕的体系结构设计。如何纠正?