【问题标题】:Passing a Reference to a C# Static Class传递对 C# 静态类的引用
【发布时间】:2013-11-08 07:46:21
【问题描述】:

我正在努力开始在使用 AWS S3 存储桶的 C# 项目中实施单元测试。

尽管只是简单地研究了一下,但我明白几乎任何与项目无关的东西都必须被嘲笑以“保证”可预测的结果。

简而言之,我试图将一个静态类(既是抽象类又是密封类)作为参数传递,它将参数限制为我定义的接口(目前仅包含 AWSClientFactory.CreateAmazonS3Client(string, string, RegionEndpoint)

但是,我无法弄清楚如何让这个类通过引用 (AWSClientFactory),并且通过广泛的研究,我看不出有任何方法。

由于我将需要通过相同的方法通过云另一个提供程序(它将模仿 S3 API),我认为这将是一个可接受的解决方案,对于这个和传递通过实现的模拟类界面。

用相同的结构实现这一点的最佳方法是什么,即从不同的静态类调用相同的方法?

【问题讨论】:

    标签: c# unit-testing amazon-web-services abstract-class static-classes


    【解决方案1】:

    您无法获取静态类的实例。因此,您无法获得对它的引用,因为没有什么可引用的。这就是为什么您不应该滥用静态类,如果您打算稍后编写单元测试。

    要实现你想要的,你可以制作自己的接口,并对该接口进行一些实现。此实现之一将包装AWSClientFactory

    【讨论】:

    • 我想我明白你的意思;我只是创建一个实现接口的新类,并简单地从实例化对象返回由静态方法进行的调用?对于这三种不同的服务,我显然必须这样做。
    • @DanielPark:是的,没错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2021-11-18
    相关资源
    最近更新 更多