【发布时间】:2023-04-01 13:20:01
【问题描述】:
我知道标题可能有点令人困惑,但让我解释一下我要完成的工作..
假设我有 类
public class TestA<T>
{
public T Key { get; set; }
}
还有类
public class TestB : TestA<int>
{
public string Name { get; set; }
}
如您所见,TestB 继承自 TestA<int>,因此继承了属性 public int Key
现在,让我们添加一个界面
public interface TestC<T> where T : TestA<X>
{
T DoSomething(X argument);
}
这就是我遇到麻烦的地方。
我希望DoSomething 方法接受T (TestA<>) 的超类的任何类型的参数,在TestB 的情况下为int。
所以,如果我有一个 TestC<TestB> 类型的实现,我希望 DoSomething 签名是:
public TestB DoSomething(int argument);
问题是TestA<X> 无法编译,我无法做到这一点
请问,您知道这是否可行吗?如果是这样,你能解释一下怎么做吗?
也许我可以用 Reflection 来管理一些事情?
【问题讨论】:
标签: c# asp.net oop generics reflection