这是实施工厂模式的正确方法吗?
我有一个应用程序使用原始MVVM(没有框架)。 我的ViewModels是MainViewModel管理的列表,但是有一些视图模型需要从Web服务获得的特定信息(如用户帐户,名称等),所以我创建了一个服务来完成此操作我得到了用户帐户,用户名和其他东西,因为我的视图模型需要这些信息,所以我创建了一个工厂,返回ViewModels对象并将其插入到MainViewModel保存的集合中,并在构造函数中将该服务作为一个界面。
例:
SelectionViewModel.cs
public SelectionViewModel(IClient provider)
{
_provider = provider;
_configurationRepository = new ConfigurationRepository();
}
public SelectionViewModel(IClient provider, IPageFactory factory)
{
_provider = provider;
_factory = factory;
_configurationRepository = new ConfigurationRepository();
}
Factory.cs
IPageViewModel IPageFactory.Create(Type type)
{
var page = Activator.CreateInstance(type) as IPageViewModel;
if (page != null)
return page;
else
return (IPageViewModel)Activator.CreateInstance(typeof(OutOfServiceViewModel));
}
IPageViewModel IPageFactory.Create(object [] parameters, Type type)
{
IPageViewModel page;
if (type.GetConstructor(Type.EmptyTypes) != null)
page = Activator.CreateInstance(type) as IPageViewModel;
else
page = Activator.CreateInstance(type, parameters) as IPageViewModel;
if (page != null)
return page;
return (IPageViewModel)Activator.CreateInstance(typeof(OutOfServiceViewModel));
}
我的问题是,如果有更好的方法将参数发送给构造函数,或者更好的方法来解决我的问题(使用ViewModels之间的用户信息传递服务)
链接地址: http://www.djcxy.com/p/82261.html上一篇: Is this the correct way to implement the factory pattern?
下一篇: How to associate a Interface, with classes from different solutions