C# 为我的viewModel创建构造函数时出现运行时错误
我设计了一个简单的UI,显示从web.config文件读取的连接字符串。我非常接近MVVM light框架,当我实例化我的ConnectionStringViewModel时,我得到了错误。如果我把它拿出来,一切都会正常,但我无法获取需要显示的数据。下面是一些代码: 连接字符串视图模型: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
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未在缓存中找到