这是实施工厂模式的正确方法吗?

时间:2014-05-15 00:03:23

标签: c# .net wpf mvvm

我有一个使用原始MVVM的应用程序(没有框架)。我的ViewModel是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之间传递用户信息的服务)

0 个答案:

没有答案