为viewModel创建构造函数时出现运行时错误

时间:2015-02-16 20:17:21

标签: c# mvvm web-config

我设计了一个简单的UI,显示从web.config文件中读取的连接字符串。我已经非常接近MVVM光框架了,当我实例化我的ConnectionStringViewModel时,我得到了错误。如果我把它拿出来,事情就行了,但是我无法获得我需要显示的数据。这是一些代码:

连接字符串ViewModel:

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;
        });
}

ValidationService:

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);
    }
}

IValidationService:

public interface IValidationService
{
    void SqlConnectionStringService(Action<ConnectionString, Exception> callback);
}

1 个答案:

答案 0 :(得分:0)

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

你没有说这个例外很难说。