如何知道两个类都来自同一个通用类

问题描述 投票:0回答:1

这里是示例代码。如何知道Foo和Bar都来自同一个类Base<>?

class Program
{
    static void Main(string[] args)
    {
        var foo = typeof(Foo).IsAssignableFrom(typeof(Base<,>));
        var bar = typeof(Bar).IsAssignableFrom(typeof(Base<,>));
    }
}

public abstract class Base<TInput, TOutput>
{
    public abstract TOutput Run(TInput input);
}


public class Foo : Base<int, string>
{
    public override string Run(int input)
    {
        return input.ToString();
    }
}

public class Bar : Base<string, string>
{
    public override string Run(string input)
    {
        return input.Replace(".", "").ToString();
    }
}

enter image description here

c# reflection generic-programming
1个回答
1
投票

为了使你的代码编译,你需要改变以下内容 Base<>Base<,> 因为它有两个类型参数。还是 IsAssignableFrom 不应该工作的原因,也许这样的东西将为你工作。

var foo = typeof(Foo).BaseType.GetGenericTypeDefinition() == (typeof(Base<,>));
var bar = typeof(Bar).BaseType.GetGenericTypeDefinition() == (typeof(Base<,>));

?

© www.soinside.com 2019 - 2024. All rights reserved.