我有一个父窗体(MainForm),我可以从中调用一个wpf窗口(ChildWPF)。 在父窗口中,我有一些数据访问方法。我需要一种方法从ChildWPF调用它们并让它们返回给我。我想通过代表这样做(我不想通过MainForm作为referance)。
在ChildWPF中:
public delegate List<string> MainFormMethod();
现在我似乎无法找到一种方法将我在MainForm中声明的hanlder与我的ChildWPF连接起来。也许使用事件是一种更好的方法?
答案 0 :(得分:1)
将数据访问方法提取到ISomeDataAccess
接口,并将数据访问逻辑从MainForm
传输到实现此接口的类。在此之后,您也可以在ChildWpf
分享此课程。在创建ISomeDataAccess
表单时,将ChildWpf
接口的实例作为contructor参数发送
修改强>
使用ChildWpf项目中ChildWpf
仅需要的部分数据访问层创建接口。您可以直接在DataAccess
类中实现此接口或创建中间适配器类。
直接实施:
public class DataAccess : IChildDataAccess
{
public void SomeDataLogic1()
{}
public void SomeDataLogic2()
{}
public void SomeDataLogic3()
{}
}
public interface IChildDataAccess
{
void SomeDataLogic1();
void SomeDataLogic3();
}
或中级:
public class DataAccess
{
public void SomeDataLogic1()
{}
public void SomeDataLogic2()
{}
public void SomeDataLogic3()
{}
}
public class ChildDataAccess : IChildDataAccess
{
private readonly DataAccess _dataAccess;
public ChildDataAccess( DataAccess dataAccess )
{
if ( dataAccess == null )
throw new ArgumentException( nameof( dataAccess ) );
_dataAccess = dataAccess;
}
public void SomeDataLogic1()
{
_dataAccess.SomeDataLogic1();
}
public void SomeDataLogic3()
{
_dataAccess.SomeDataLogic3();
}
}
public interface IChildDataAccess
{
void SomeDataLogic1();
void SomeDataLogic3();
}