繁体   English   中英

依赖注入对c#中的非静态类和静态方法没有价值

[英]Dependency injection has no value for non-static class and static method in c#

我从 AWS 下载了签名版本 4 的代码。他们的代码是这样的:

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

我想应用依赖注入,以便我使用注册为单例的配置服务。 所以它会变成这样:

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.AWSAccessKeyIDconfig.AWSSecretKey没有值。 但在其他非静态方法中它有。 当我调试它时,提到的 2 个变量为空。 我该如何解决?

如果您有PresignedUrl非静态构造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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM