C# 创建一个接口并使用SimpleIoc注入

C# 创建一个接口并使用SimpleIoc注入,c#,dependency-injection,uwp,configuration,mvvm-light,C#,Dependency Injection,Uwp,Configuration,Mvvm Light,我创建了一个类AppConfig: public class AppConfig { private readonly IConfigurationRoot _configurationRoot; public AppConfig() { var builder = new ConfigurationBuilder() .SetBasePath(Package.Current.InstalledLocation.Path)

我创建了一个类AppConfig:

public class AppConfig
{
    private readonly IConfigurationRoot _configurationRoot;

    public AppConfig()
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(Package.Current.InstalledLocation.Path)
            .AddJsonFile("appsettings.json", optional: false);

        _configurationRoot = builder.Build();
    }

    private T GetSection<T>(string key) => _configurationRoot.GetSection(key).Get<T>();

    public Config Config => GetSection<Config>(nameof(Config));
}
但是有没有更好的方法将其用于依赖项注入呢

这样我就可以像其他服务一样将其添加到ViewModelLocator中

public ViewModelLocator()
{
    SimpleIoc.Default.Register<ITestService, TestService>();

    SimpleIoc.Default.Register<MainViewModel>();
}
公共ViewModelLocator() { SimpleIoc.Default.Register(); SimpleIoc.Default.Register(); }
或者,在使用MvvmLightLibsStd10的UWP应用程序中,您将如何实现这一点?

在接口中创建抽象所需类的接口

public interface IAppConfig {
    Config Config { get; }
}
从接口派生类

public class AppConfig : IAppConfig {
    //...omitted for brevity
}
并将抽象和实现注册到容器中

//...

SimpleIoc.Default.Register<IAppConfig, AppConfig>();

//...
/。。。
SimpleIoc.Default.Register();
//...

因此,任何需要使用config的类都可以通过构造函数注入显式地依赖于它

嘿,实际上,它工作得非常完美。很简单,但我总是让它变得更难。非常感谢你。
//...

SimpleIoc.Default.Register<IAppConfig, AppConfig>();

//...