gpt4 book ai didi

c# - 如何将接口(interface)用作 C# 泛型类型约束?

转载 作者:IT王子 更新时间:2023-10-29 03:31:19 27 4
gpt4 key购买 nike

有没有办法得到下面的函数声明?

public bool Foo<T>() where T : interface;

即。其中 T 是接口(interface)类型(类似于 where T : classstruct)。

目前我已经解决了:

public bool Foo<T>() where T : IBase;

其中 IBase 被定义为一个空接口(interface),它被我所有的自定义接口(interface)继承……不理想,但它应该可以工作……为什么不能定义泛型类型必须是一个接口(interface)?

就其值(value)而言,我想要这个是因为 Foo 在需要接口(interface)类型的地方进行反射...我可以将其作为普通参数传入并在函数本身中进行必要的检查,但这似乎更加类型安全(而且我认为性能更高一些,因为所有检查都是在编译时完成的)。

最佳答案

最接近的做法(除了基本接口(interface)方法)是“where T : class”,意思是引用类型。没有表示“任何接口(interface)”的语法。

这(“where T : class”)例如在 WCF 中用于限制客户端服务契约(Contract)(接口(interface))。

关于c# - 如何将接口(interface)用作 C# 泛型类型约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1096568/

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