在类库项目中创建类似App.xaml.cs的类
本文关键字:App xaml cs 的类 类库 项目 创建 | 更新日期: 2023-09-27 18:04:31
最近;我将Views
重构到他们自己的WPF Application
项目中,并将ViewModel
类移动到他们自己的类库项目中。这对于保持我的代码有序工作得很好。然后我意识到我没有App.xaml.cs
班的舒适。
这个类(对我来说)意味着我可以声明各种类型的对象,并在应用程序范围内访问它们。
。e:在app . example .cs
public partial class App : Application
{
public myDatabaseEntities context { get; set; }
// App.xaml.cs Constructor
public App()
{
context = new myDatabaseEntities();
}
}
在任意视图模型中:
myDatabaseEntities context = ((App)Application.Current).context;
以上允许我回收实例,并且在Unity (IoC容器)版本的生命周期管理器中特别方便。
事情是,我不确定如何在类库项目中实现这种行为。我不确定如何创建在运行时实例化的类。我不知道如何将App
类实例传递给相关类。有什么办法吗?
就我个人而言,我会保持所有"功能"相关的视图和视图模型在一起(彼此相邻)。您可能希望为应用程序的不同功能部分创建类库(或模块)。另外,请参考MSDN关于使用WPF和Prism构建复合应用程序的页面。
关于你的问题,有一个叫做
IApplication
的接口定义如下:
public interface IApplication
{
MyDatabaseEntities Context { get; }
}
并在App类上实现该接口:
public partial class App : Application, IApplication
{
public MyDatabaseEntities Context { get; set; }
// App.xaml.cs Constructor
public App()
{
Context = new MyDatabaseEntities();
}
}
在你的App.xaml.cs中,作为启动应用程序的一部分,通过调用Unity容器上的RegisterInstance
扩展方法来注册这个App
实例:
Container.RegisterInstance(typeof (IApplication), this, new ContainerControlledLifetimeManager());
现在,如果你的ViewModels依赖于IApplication
,那么它们将通过这个接口访问你的App
对象和Context属性。在将来,你可以通过这个接口从你的App
对象中暴露额外的属性,如:Dispatcher
, Resources
等。
我所需要的只是一个没有xaml前端的普通类。然后继承Application类。最后将它设置为app. example .cs的基类。答案已经在这里了