C# 为我的viewModel创建构造函数时出现运行时错误

C# 为我的viewModel创建构造函数时出现运行时错误,c#,mvvm,web-config,C#,Mvvm,Web Config,我设计了一个简单的UI,显示从web.config文件读取的连接字符串。我非常接近MVVM light框架,当我实例化我的ConnectionStringViewModel时,我得到了错误。如果我把它拿出来,一切都会正常,但我无法获取需要显示的数据。下面是一些代码: 连接字符串视图模型: public string SqlConnectionString { get { return _sqlConnString; } set { if (_sqlConn

我设计了一个简单的UI,显示从web.config文件读取的连接字符串。我非常接近MVVM light框架,当我实例化我的ConnectionStringViewModel时,我得到了错误。如果我把它拿出来,一切都会正常,但我无法获取需要显示的数据。下面是一些代码:

连接字符串视图模型:

public string SqlConnectionString
{
    get { return _sqlConnString; }
    set
    {
        if (_sqlConnString == value)
            return;
        _sqlConnString = value;
        RaisePropertyChanged(SqlConnString);
    }
}

public ConnectionStringViewModel(*IValidationService validationService*)
{
    _validationService = validationService;
    _validationService.SqlConnectionStringService(
        (item, error) =>
        {
            if (error != null)
            {
                // Report error here
                return;
            }
            SqlConnectionString = item.ConnString;
        });
}
验证服务:

public class ValidationService : IValidationService
{
    private readonly Configuration _webConfig = WebConfigurationManager.OpenWebConfiguration(@"C:\Source\web.config");

    public void SqlConnectionStringService(Action<ConnectionString, Exception> callback)
    {
        var connString = new ConnectionString(_webConfig.ConnectionStrings.ConnectionStrings["SomeConnectionString"].ConnectionString);
        callback(connString, null);
    }
}
public interface IValidationService
{
    void SqlConnectionStringService(Action<ConnectionString, Exception> callback);
}
IValidationService:

public class ValidationService : IValidationService
{
    private readonly Configuration _webConfig = WebConfigurationManager.OpenWebConfiguration(@"C:\Source\web.config");

    public void SqlConnectionStringService(Action<ConnectionString, Exception> callback)
    {
        var connString = new ConnectionString(_webConfig.ConnectionStrings.ConnectionStrings["SomeConnectionString"].ConnectionString);
        callback(connString, null);
    }
}
public interface IValidationService
{
    void SqlConnectionStringService(Action<ConnectionString, Exception> callback);
}

使用DI时,您希望避免在构造函数中执行方法。这是因为DI引导程序可能尚未完成映射,并可能导致NullReference异常


您不会说异常很难说。

System.Reflection.TartgetInvocationException具体来说,InnerException:Type未在缓存中找到