如何告诉自创建的NuGet包应用程序中发生了某些变化?

问题描述 投票:0回答:1

我们创建了一个简单的 NuGet 包,它包装了我们最常用的请求函数(基本上是使用 HttpClient 发送 API 请求),因此我们不必在每个项目中再次实现它们。我们使用一个名为

RequestService
的类,它处理请求并保存
HttpClient
的实例。现在,在一个应用程序中,我可以在设置中动态设置 API-URL,因此我想告诉
RequestService
HttpClient
的配置发生了一些变化。

我想在更改设置时引发一个事件,但由于

RequestService
NuGet 不了解该应用程序,因此这对我来说似乎不是最干净的解决方案。对于如何告诉 NuGet 包我的代码中发生了某些更改,是否有一个很好的解决方案?

c# nuget-package
1个回答
0
投票

在没有看到代码的情况下,很难判断。以下是一些选项:

您可以创建一些抽象,允许通过某些中间对象在

RequestService
中注入 url/设置。例如如下所示:

public interface IUrlProvider
{
    string Url { get; }
}

public class RequestService
{
    private readonly IUrlProvider _urlProvider;

    public RequestService(IUrlProvider urlProvider) => _urlProvider = urlProvider;
    
    // use _urlProvider.Url in the methods
}

// for non-dynamic urls
public class ConstantUrlProvider : IUrlProvider
{
    public ConstantUrlProvider(string url) => Url = url;
    
    public string Url { get; }
}

另一个实现将由应用程序控制,允许在需要时管理/更改 url。

您还可以考虑使用选项模式来管理.NET中使用的设置 - 它提供了不同的选项来处理此类事情,其中之一是

IOptionsMonitor
,它与之前的方法类似
IOptionsMonitor<TOptions>.CurrentValue
属性,并允许通过
IOptionsMonitor<TOptions>.OnChange
订阅更改。

© www.soinside.com 2019 - 2024. All rights reserved.