2017-04-11 67 views
0

我有一个场景来通知用户winform有关他在另一个winform中选择的日期。我陷害了class结构。试图用events在我Foo与规划订阅的方法,从Roo如何在孩子的Grand-Parent类中触发一个方法

触发但我不能做到这一点,除非我在Roo创建的Foo另一个会话将无法正常工作,我想

class Foo 
{ 
    static void Main() 
    { 
     Too to = new Too(); 
     // 
     Foo fo = new Foo(); 
     fo.PromptUser(); 
    } 

    void PromptUser() 
    { 
     // If date is in Past 
      //some logic 
     // If future 
      // some logic 
    } 
} 

class Too 
{ 
    public void Too_Method() 
    { 
     Roo ro = new Roo(); 
    } 
} 

class Roo 
{ 
    //In this class, User will be able to 
    // Select a date 
} 
方式

如何通过/知道在Roo类中选择的日期来定义我的Foo类中的逻辑?

+0

而且我不应该从Roo调用'Foo' –

回答

0

使用静态方法,所以无需实例化类

class Roo 
{ 
    public static dateTime selectedDate() 
    { 
    //selected date 
    return //selected date 
    } 
} 

在Foo类由ClassName.staticmethod调用静态方法直接

class Foo 
{ 
    dateTime userSelectedDate = Roo.selectedDate(); 
} 

或另一种方式是使用继承,

class Foo : Roo 
    { 

    } 
+0

我不能从我的'Foo'类中调用Roo, ldn't继承 –

+0

将您的Roo类更改为静态类,并将该变量声明为静态,以便可以跨所有表单访问它。 –

+0

对不起。我们的架构不会允许这种变化,同时“Roo”类也被许多其他类使用。我无法将这些类设计转换为此需求 –

相关问题