c#typeof应用于泛型参数超类型

c# typeof applied to generic parameter supertype

我有一个方法,它没有任何t参数。

不幸的是,C类型的运算符不适用于下面所示的泛型。

1
2
3
4
5
6
7
8
9
10
11
12
public static string ToString(object obj)
{
    if (obj.GetType() == typeof(List<object>))
    {
        return"Bug: Never called";
    }
    if (obj.GetType() == typeof(List<int>))
    {
        return"Method only works for int lists";
    }
    return"";
}

预期的输出:toString(int列表)将返回"bug:never called"。

实际输出:"方法仅适用于int列表"

这在Java中运行得非常好。你会说C中的仿制药不支持这一点。如何重新构造代码,使"ToString(object)"方法适用于对象列表?

要求:不能修改方法的签名,只能修改其实现。

不幸的是,您不能使"int"类实现接口。因为int类是由Microsoft编写的。因此,我不能在int类型上添加访问者模式。