gpt4 book ai didi

c# - 强制通用参数的类型是接口(interface)而不是特定类

转载 作者:行者123 更新时间:2023-11-30 19:19:31 24 4
gpt4 key购买 nike

给定这些接口(interface)和实现

interface IService {}
class Service : IService {}

使用通用方法

void Register<I>(I service)
{
var type = typeof(I);
}

如何使以下几行关于泛型类型保持一致?

Register<IService>(new Service())    // type is 'IService'
Register(new Service()); // type is 'Service'

可以接受两个选项:

  • 这两行都是使用IServie类型编译的
  • 第二行编译失败

最佳答案

你不能 - 没有办法将类型参数限制为接口(interface)。

当然,您可以执行执行时间检查,如果 I 不是接口(interface),则抛出异常。 (顺便说一句,命名约定建议这应该是 T,而不是 I。)

关于c# - 强制通用参数的类型是接口(interface)而不是特定类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9161143/

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