我设计了一个简单的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);
}
答案 0 :(得分:0)
使用DI,您希望避免在构造函数中执行方法。这是因为DI引导程序尚未完成映射并且可能导致NullReference异常。
你没有说这个例外很难说。