gpt4 book ai didi

c# - 接口(interface)的对象,但对实现接口(interface)的类型有约束

转载 作者:太空宇宙 更新时间:2023-11-03 17:58:42 24 4
gpt4 key购买 nike

我有一个具有如下约束的通用方法:

private string GetResult<T>(T myObject) where T : IDoSomething<T>
{
......
}

现在,问题是 IDoSomething 是由类而不是类接口(interface)实现的,而且对象总是使用接口(interface)作为它们的类型创建的,而不是像这样的类:

IClassA myObject = new ClassA();

因此,无论何时调用泛型方法,都必须对 myObject 进行强制转换以将其作为参数转发。

有没有办法避免转换并使代码正常工作? (除了在IClassA中继承IDoSomething的选项)

最佳答案

不,我认为您无法避免强制转换,因为接口(interface) IClassAIDoSomething 没有任何关系。

仅实现一个接口(interface)的某个类也恰好实现另一个接口(interface)这一事实并不能使这两个接口(interface)兼容。

即使将 IClassA 对象赋值回 ClassA 变量也需要显式转换。

关于c# - 接口(interface)的对象,但对实现接口(interface)的类型有约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5100382/

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