gpt4 book ai didi

c# - 依赖注入(inject)对c#中的非静态类和静态方法没有值(value)

转载 作者:行者123 更新时间:2023-12-04 10:18:34 25 4
gpt4 key购买 nike

我从 AWS 下载了签名版本 4 的代码。他们的代码如下所示:

public class PresignedUrl
{
public static void Run(string a, string b, string c)
{
}
}

我想应用依赖注入(inject),以便我使用注册为单例的配置服务。所以结果会是这样的:
using MyNamespace.Services.Interfaces;

public class PresignedUrl
{
private static string _awsAccessKeyID;
private static string _awsSecretKey;

public PresignedUrl(IMyConfigurationService config)
{
_awsAccessKeyID = config.AWSAccessKeyID;
_awsSecretKey = config.AWSSecretKey;
}

public static void Run(string a, string b, string c)
{
}
}

但问题是 config.AWSAccessKeyID 内部没有任何值(value)。和 config.AWSSecretKey .但在其他非静态方法中它有。当我调试它时,提到的 2 个变量为空。
我该如何解决?

最佳答案

如果您有 PresignedUrl 的非静态构造函数, 静态字段 _awsAccessKeyID_awsSecretKey在您运行构造函数中的代码之前,不要分配值。

创建 PresignedUrl 类实例时,可以访问 _awsAccessKeyID_awsSecretKey从静态和非静态方法:

        PresignedUrl.Run("a", "b", "c");

var config = new MyConfigurationService
{
AWSAccessKeyID = "id",
AWSSecretKey = "key"
};
var instance = new PresignedUrl(config);

PresignedUrl.Run("a", "b", "c");
instance.NonStatiacRun("a", "b", "c");

输出:
_awsAccessKeyID: 
_awsSecretKey:
_awsAccessKeyID: id
_awsSecretKey: key
_awsAccessKeyID: id
_awsSecretKey: key

https://dotnetfiddle.net/Jz1hIB

关于c# - 依赖注入(inject)对c#中的非静态类和静态方法没有值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60966565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com