【发布时间】:2021-09-11 06:44:29
【问题描述】:
我正在尝试从我的域类中引用 a_UserTenant 中的方法
这是顶部:
public IServiceProvider Services { get; set; }
private readonly A_UserTenant a_UserTenant;
private readonly A_User a_User;
private string Username = null;
public Domain(string Username)
{
InitializeComponent();
this.Username = Username;
UsernameTextbox.Text = Username;
loading = new Loading.Loading();
this.a_UserTenant = this.Services.GetRequiredService<A_UserTenant>();
this.a_User = this.Services.GetRequiredService<A_User>();
}
这是我的 App.Xaml
public IServiceProvider ServiceProvider { get; private set; }
public IConfiguration configuration { get; private set; }
protected override void OnStartup(StartupEventArgs e)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
configuration = builder.Build();
var serviceCollection = new ServiceCollection();
ConfigureServices(serviceCollection);
ServiceProvider = serviceCollection.BuildServiceProvider();
var login = ServiceProvider.GetService<Login>();
login.Show();
}
private void ConfigureServices(IServiceCollection services)
{
// ...
services.AddSingleton(configuration);
LoadSDR_ManageWSControllers loadSDR_ManageWSControllers = new LoadSDR_ManageWSControllers();
loadSDR_ManageWSControllers.Services(services);
//Views
services.AddTransient(typeof(Login));
services.AddTransient(typeof(Domain));
}
现在的问题是我得到一个异常说 -
$exception {"值不能为空。(参数 'provider')"} System.ArgumentNullException
这是 A_UserTenant 类的构造函数:
private readonly IConfiguration configuration;
public A_UserTenant(IConfiguration configuration)
{
this.configuration = configuration;
}
我该如何解决这个问题?
编辑:
这是我想从我的 Domain 类调用的 A_UserTenant 中的方法之一
public UserTenant Get(string Id)
{
RestClient client = new RestClient();
var link = $"{link]}Directory/UserTenant/Get";
var username = uname;
var password = upw;
client.BaseUrl = new Uri(link);
client.Authenticator = new HttpBasicAuthenticator(username, password);
RestRequest request = new RestRequest();
request.AddParameter("Id", Id);
request.Method = Method.GET;
var res = client.Execute(request);
if (res.StatusCode == System.Net.HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<UserTenant>(res.Content);
}
else
{
return null;
}
}
这是我目前从另一个类导航到 Domain 类的方式:
Domain domain = new Domain(Username);
domain.Show();
this.Close();
【问题讨论】:
-
你想在 wpf 中使用 asp.net core DI 吗?
-
您没有将
IOptions<T>用于强配置类型是否有特殊原因? -
"Parameter 'provider'" 我没有看到提供者参数,完整的堆栈跟踪是什么?
-
从外观上看,您有一个实例成员
IServiceProvider Services,并且您希望它在您的视图中自动分配给您,直言不讳地对您来说效果不佳,它将为空 -
@LeiYang 是的,我读到有可能?
标签: c# wpf asp.net-core .net-core dependency-injection