是否可以创建一个需要通用类型的方法,然后返回类型基于给定类型的成员
类似这样的事情
class ExampleClass
{
public T.ReturnType Send<T>() where T : ClassWithType
{
...
}
}
abstract class ClassWithType
{
internal abstract Type ReturnType { get; }
}
如果不可能的话,什么是一个好的替代方案。
提前致谢
最佳答案
因为它评论你说你想通过套接字发送一个数据包,并且每个数据包都有不同的返回类型 - 你可以在数据包类本身中编码返回类型:
public abstract class Packet<TResponse> {
// other members here
public abstract TResponse DecodeResponse(byte[] raw);
}
public class IntPacket : Packet<int> {
public override int DecodeResponse(byte[] raw) {
// decode
return 0;
}
}
然后你的发送方法变成:
static TResponse Send<TResponse>(Packet<TResponse> packet) {
// send, got response
byte[] raw = GetResponse();
return packet.DecodeResponse(raw);
}
调用就变成了:
int response = Send(new IntPacket());
关于c# - 是否可以从成员中生成通用返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43272355/