C# 初始化对象并在模块之间共享
我有多个模块(每个模块都有自己的项目),我尝试在每个模块之间共享一个对象 该对象位于初始化的UserViewModel模块上,但不在其他模块上(仅在属性更改触发器之后)。我用EventAggregator试过了,但没有成功。我错过了一些非常重要的事情C# 初始化对象并在模块之间共享,c#,prism,C#,Prism,我有多个模块(每个模块都有自己的项目),我尝试在每个模块之间共享一个对象 该对象位于初始化的UserViewModel模块上,但不在其他模块上(仅在属性更改触发器之后)。我用EventAggregator试过了,但没有成功。我错过了一些非常重要的事情 公共用户类用户 { 获取{return\u user;} set{SetProperty(ref_user,value);} } 第一模块 public UserViewModel(IEventAggregator userEventAggrega
公共用户类用户
{
获取{return\u user;}
set{SetProperty(ref_user,value);}
}
第一模块
public UserViewModel(IEventAggregator userEventAggregator,
UnityContainer(容器)
{
_userEventAggregator=userEventAggregator;
_userEventAggregator.GetEvent().Publish(用户);
User.PropertyChanged+=UserOnPropertyChanged;
}
私有void UserOnPropertyChanged(对象发送方,
PropertyChangedEventArgs(e)
{
_userEventAggregator.GetEvent().Publish(用户);
}
第二模块
public UserDetailsViewModel(IEventAggregator userEventAggregator,
IUnityContainer(集装箱)
{
_userEventAggregator=userEventAggregator;
_userEventAggregator.GetEvent).Subscribe(UserUpdate);
}
UserViewModel中的用户对象已初始化,但不在UserDetailsViewModel中(它创建自己的对象)
这是错误的做法,不是视图模型创建模型,而是视图模型从模型创建。您需要一个从两个视图模型访问的共享服务,该服务管理模型
例如:
internal class SimpleInMemoryUserRepository : IUserRepository
{
public User GetTheUser()
{
return _user;
}
public void DeleteTheUser()
{
_user = null;
}
public void CreateNewUser()
{
_user = new User();
}
private User _user;
}
在初始化代码中:
container.RegisterSingleton<IUserRepository, SimpleInMemoryUserRepository>();
container.RegisterSingleton();
UserViewModel中的用户对象已初始化,但不在UserDetailsViewModel中(它创建自己的对象)
这是错误的做法,不是视图模型创建模型,而是视图模型从模型创建。您需要一个从两个视图模型访问的共享服务,该服务管理模型
例如:
internal class SimpleInMemoryUserRepository : IUserRepository
{
public User GetTheUser()
{
return _user;
}
public void DeleteTheUser()
{
_user = null;
}
public void CreateNewUser()
{
_user = new User();
}
private User _user;
}
在初始化代码中:
container.RegisterSingleton<IUserRepository, SimpleInMemoryUserRepository>();
container.RegisterSingleton();
您面临的例外情况是什么?你到底想达到什么目的?@Haukinger也不例外。UserViewModel中的用户对象已初始化,但不在UserDetailsViewModel中(它创建自己的对象)。仅当UserOnPropertyChanged触发UserDetailsViewModel中的用户对象与UserViewModel用户对象相同时。我的目标是在每个模块中使用相同的对象。您面临的例外是什么?你到底想达到什么目的?@Haukinger也不例外。UserViewModel中的用户对象已初始化,但不在UserDetailsViewModel中(它创建自己的对象)。仅当UserOnPropertyChanged触发UserDetailsViewModel中的用户对象与UserViewModel用户对象相同时。我的目标是在每个模块中使用相同的对象。非常感谢!RegisterSingleton/RegisterInstance是我完全错过的东西,难怪我不能对这件事保持清醒。非常感谢!RegisterSingleton/RegisterInstance是我完全错过的东西,难怪我不能对这件事保持清醒的头脑。