将多个通用接口传递给一个方法

2023-12-28

我试图将多个通用接口作为参数传递给我的类之一的构造函数。

以下代码无法编译:

public interface IPosterGenerator<T>
{
    IQueryable<T> GetPosters();
}

public class Pinboard
{
    public Pinboard(IPosterGenerator<A> firstPosterGenerator, IPosterGenerator<B> secondPosterGenerator, IPosterGenerator<B> thirdPosterGenerator)
    { 
    }
}

我有大约一百种不同类型的海报生成器。它们都继承自 IPosterGenerator 接口。当我实例化一个新的 Pinboard 时,我需要将三个 IPosterGenerator 传递给 pinboard 的构造函数。然而,这三个 IPosterGenerator 中的每一个都属于不同的类型。这就是为什么我想出了这个愚蠢的A、B和C。

这完全可以做到吗?


听起来你可能想做Pinboard通用的:

public class Pinboard<T1, T2, T3>
{
    public Pinboard(IPosterGenerator<T1> generator1,
                    IPosterGenerator<T2> generator2,
                    IPosterGenerator<T3> generator3)
    {
         ...
    }
}

为了更方便地拨打电话,您可以also使用泛型方法创建一个非泛型类:

public static class Pinboard
{
    public static Pinboard<T1, T2, T3> Create(IPosterGenerator<T1> generator1,
                                              IPosterGenerator<T2> generator2,
                                              IPosterGenerator<T3> generator3)
    {
        return new Pinboard<T1, T2, T3>(generator1, generator2, generator3);
    }
}

然后,如果你已经有了生成器,你可以调用:

// Or whatever...
var board = Pinboard.Create(bigGenerator, smallGenerator, mediumGenerator);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将多个通用接口传递给一个方法 的相关文章

随机推荐

  • UILabel 中文本的像素宽度

    我需要绘制一个删除线的 UILabel 因此我将 UILabel 子类化并实现如下 implementation UIStrikedLabel void drawTextInRect CGRect rect super drawTextIn
  • 使用 OAEP 密钥加密的 S/MIME 封装邮件解密失败?

    使用 Java 和 BouncyCastle 我能够解密大量 S MIME 封装的消息 但当密钥加密算法为1 2 840 113549 1 1 7 id RSAES OAEP 解密失败 堆栈跟踪在这个问题的末尾 发生这种情况的行 conte
  • Pocketsphinx安装失败?树莓派零(Raspbian Jessie)

    这可能会被标记为重复项 但我没有任何运气 所以我们开始吧 我正在尝试使用Python2 7开发一个类似 Jarvis 的设置 我希望使用 Pocketsphinx 作为其中的一部分 我尝试在我的 Windows 10 机器上执行此操作 但
  • “.”在哪里? (点)来自使用 PHP 'scandir' 时

    我有点困惑 我正在构建一个 PHP 函数来循环输出指定目录中的图像 PHP dir bilder objekt 0 objekt nr thumbnail thumbnails scandir dir print r thumbnails
  • 如何在生成 PDF 文件下载时显示进度条,而不出现 IE“下载”警告

    我已经在客户端和服务器之间进行了通信 过程很简单 我正在向控制器发出 AJAX POST 请求 该控制器在文件系统中生成 pdf 上述请求成功后 将发出表单 GET 请求以取回 pdf 并打开标准浏览器 保存或打开 对话框 我之所以采用两步
  • C - fwrite 大于 4GB 的二进制文件

    我基本上是 C 新手 我有一个 64 位 Windows 7 配备 64GB RAM 和 240GB SSD 我使用的采集板将采集的数据存储在 2 个内部 FIFO 中 然后将数据传递到 RAM 这样我就有可能采集 60 GB 的数据 我无
  • 部署时字体未加载

    我创建了一个有角度的应用程序 它在本地环境中加载得非常好 所有样式和字体都被应用 但是当我部署它时 字体没有加载 无法弄清楚为什么 它没有在控制台中显示任何错误或警告消息 我正在导入所有 css 样式angular json文件如下 dem
  • Factorial 函数在 Python 中工作,对于 Julia 返回 0

    我在Python中定义了一个阶乘函数 如下所示 def fact n if n 1 return n else return n fact n 1 print fact 100 在 Julia 中如下 function fact n if
  • 更改日期格式javascript

    我正在从两个不同的 API 中提取一些数据 稍后我想要获取这些对象 但是 我得到两种不同的日期格式 这种格式 1427457730 和这种格式 2015 04 10T09 12 22Z 如何更改其中之一的格式 以便我可以使用相同的格式 ea
  • MSSQLSM 2008 奇怪的登录在 select 语句上失败

    我的SQL服务器上有多种用户 所有用户都可以登录服务器 然而 一个用户一旦登录就无法在特定视图上运行任何操作 选择 更改 编辑 但可以在所有其余视图上运行 用户设置与具有完全访问权限的另一个帐户相同 说实话 它们是相同的 对于无法从他的视图
  • Apollo 的 MockedProvider 不为 withApollo 中包装的组件提供客户端

    在测试 withApollo 中包装的组件时 我使用 Apollo 文档中指定的 Apollo 的 MockedProvider 但是当酶尝试渲染该组件时 渲染器找不到clientMockedProvider 应该已经提供了 我有一个使用的
  • 如何使用jquery检查某个元素是否在用户视图中

    我有一个很大的可拖动对象div在我的窗户里 这div有一个较小的窗口 div style width 500px height 500px div style width 100 height 5000px ul li li li li l
  • WCF netTCPBinding - 传输加密是否足够?

    我有一个处理一些敏感数据的 WCF 服务 我想确保不暴露这些数据 所以我正在考虑 netTCPBinding 主要是因为我可以控制它运行的网络 并且性能是重中之重 我认识到有两个领域可以加密 传输级别和消息级别 我打算使用证书在传输级别进行
  • 获取每个字符出现的次数

    给定字符串 a dqdwqfwqfggqwq 如何获取每个字符出现的次数 在2 7和3 1中有一个叫做Counter的工具 gt gt gt import collections gt gt gt results collections C
  • Winform 消息框中可点击的 URL?

    我想在消息框中显示帮助链接 默认情况下 文本显示为不可选择的字符串 一种选择是在消息框中显示 url 以及一条消息 并提供帮助按钮 将您带到该 url MessageBox Show test message caption Message
  • 如何使用 CSS 将跨度更改为看起来像 pre?

    是否可以更改 span 标签 或 div 将其内容预格式化为 pre 标签只使用 CSS 吗 看着那 这W3C CSS2 1 默认样式表 https www w3 org TR CSS21 sample html or the CSS2 2
  • AJAX向WebApi传递多个参数

    AJAX 请求 ajax url url dataType json type Post data token 4 feed id 0 message Hello World userId 4 服务器端 Web API HttpPost p
  • 使用外部框架构建 Objective-C 应用程序

    我正在整合growl http growl info documentation developer implementing growl php lang cocoa进入我的 Objective C 应用程序 但是 如果我构建并运行我的应
  • C、硬件抽象层中“extern”类型的变量

    我正在研究硬件抽象层 该 HAL 的目的是在 Linux 驱动程序和 MCU 驱动程序之间轻松切换 我正在研究SPI接口 下面是 打开 SPI接口的HAL函数的签名 哈尔 spi h spi handle t spi open spi po
  • 将多个通用接口传递给一个方法

    我试图将多个通用接口作为参数传递给我的类之一的构造函数 以下代码无法编译 public interface IPosterGenerator