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

我有一个应用程序使用原始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