c# - 是否可以从成员中生成通用返回类型

标签 c# generics

是否可以创建一个需要通用类型的方法,然后返回类型基于给定类型的成员

类似这样的事情

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/

相关文章:

c# - 无法通过代码清除 Silverlight 图表工具包轴

c# - 从另一个数组顺序排序一个数组?

c# - Silverlight 访问 ashx JSON 响应

java - 尝试获取具有通用参数的类

java - 绑定(bind)不匹配泛型

Java - 返回指定泛型类型的列表

C# 如何插入零日期?

c# - DataSet Merge 和 AcceptChanges 以获得 DiffGram

c# - 使用配置文件中的字符串来初始化泛型

vb.net - 扩展方法上的通用约束的奇怪行为