我必须将方法从用户控件传递给WPF。为此,我使用委托(UserControl调用WPF,所以我不能从WPF调用UserControl)。
用户控件中的:
myWPF = new WPF1.UserControl1(Method1, Method2, Method3, Method4);
在WPF中:
public delegate int Del1(int i)
public Del1 MyMethod1;
public delegate string Del2(int i)
public Del2 MyMethod2;
public delegate void Del3()
public Del3 MyMethod3;
public delegate void Del4()
public Del4 MyMethod4;
// Constructor
public UserControl1(Del1 MyMethod1, Del2 MyMethod2,Del3 MyMethod3,Del4 MyMethod4)
{
MyMethod1 = Method1;
MyMethod2 = Method2;
MyMethod3 = Method3;
MyMethod4 = Method4;
}
我有很多方法可以通过。是否有可能在我拥有所有方法的地方传递un bundle方法而不是一个接一个地传递?
答案 0 :(得分:1)
虽然这不是您确切问题的答案,但我做认为这是正确答案:
简单来说,这样就可以在接口中定义所需的方法,在单独的类中实现它们并传入接口。您在应用程序启动时注册哪个类实现接口(或者甚至可以基于上下文动态地)。这样定义(契约)就与实现分离,从而提供了更大的灵活性和测试能力。
有关更多信息,请查看Martin Fowler对Inversion of Control Containers and the Dependency Injection pattern
的解释