如何创建依赖注入类的静态实例?

时间:2016-01-16 19:48:00

标签: c# constructor dependency-injection static-initialization app.xaml

我已经定义了一个将存储库实例作为唯一构造函数参数的类。现在我创建了该类的静态实例,MainViewModel需要指定构造函数参数。

问题:

为了指定必需的参数,我在MainVM类的静态实例中按预期添加了IRepository参数。

这没有按预期工作,因为编译器因此而抛出以下错误:

Using the generic type 'ParkingTagPicker.DAL.IRepository<T>' requires 1 type arguments  

ParkingTagPicker.Models.Zone' is a 'type' but is used like a 'variable' 

The name 'zoneDataService' does not exist in the current context    

从查看错误看,IRepository似乎提供了正确的Zone类型。

有没有人知道在这种情况下如何正确定义构造函数args?

MainViewModel:

    //IRepository instance with Zone type arg
    //(Zone is a model class)
    private IRepository<Zone> _zoneDataService;

    public MainViewModel(IRepository<Zone> zoneDataService)
    {
        this._zoneDataService = zoneDataService;
    }

App.xaml.cs:

    /// <summary>
    /// A static ViewModel used by the views to bind against.
    /// </summary>
    /// <returns>The MainViewModel object.</returns>
    public static MainViewModel ViewModel
    {
        get
        {
            // Delay creation of the view model until necessary
            if (viewModel == null)
                viewModel = new MainViewModel(IRepository<Zone> zoneDataService);

            return viewModel;
        }
    }

0 个答案:

没有答案