gpt4 book ai didi

c# - 泛型变量限制和接口(interface)

转载 作者:太空狗 更新时间:2023-10-29 23:35:37 24 4
gpt4 key购买 nike

我正在实现一个通用接口(interface)(特别是查询提供程序)。在某些时候,我被迫返回一个通用结果,我需要从一些内部接口(interface)获得:

public TResult Execute<TResult>(...) {
return something.Foo<TResult>();
}

something.Foo 在哪里

public T Foo<T>() where T: MyBaseClass, new() {
...
}

这当然会爆炸,因为外部定义的 TResult 与内部定义的 T 没有相同的类型限制。问题是:有没有办法让 TResult 适合 Foo?我可以以某种方式显式测试这两个条件并强制类型变量吗?

最佳答案

你可以尝试这样的事情:

public TResult Execute<TResult>(...) 
{
if (typeof(TResult) is MyBaseClass)
{
Type mytype = typeof(TResult);
MethodInfo method = typeof({TypewhereFoo<>IsDeclared}).GetMethod("Foo");
MethodInfo generic = method.MakeGenericMethod(myType);
return (TResult)generic.Invoke(this, null);
}
else
{
// Throw here
}
}

关于c# - 泛型变量限制和接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1424152/

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