Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取类类型?_C#_Reflection_.net 4.0 - Fatal编程技术网

C# 获取类类型?

C# 获取类类型?,c#,reflection,.net-4.0,C#,Reflection,.net 4.0,给定 B.Foo()是否可以在.NET4中获取typeof(B)?请注意,Foo是静态的。A.Foo()和B.Foo()之间没有区别。在这两种情况下,编译器都会调用a.Foo()。因此,不,没有办法检测Foo是否被称为A.Foo()或B.Foo(),不幸的是,这是不可能的 一种替代方法是将A设置为通用,如下所示: public class A { public static void Foo() { // get typeof(B) } } public

给定


B.Foo()
是否可以在.NET4中获取
typeof(B)
?请注意,
Foo
是静态的。
A.Foo()
B.Foo()
之间没有区别。在这两种情况下,编译器都会调用
a.Foo()
。因此,不,没有办法检测
Foo
是否被称为
A.Foo()
B.Foo()
,不幸的是,这是不可能的

一种替代方法是将
A
设置为通用,如下所示:

public class A
{
    public static void Foo()
    {
        // get typeof(B)
    }
}

public class B : A
{

}

这就是我最终发现的解决方案:)(第一个)。很好用!谢谢
public class A<T>
{
    public static void Foo()
    {
        // use typeof(T)
    }
}

public class B : A<B>
{
}
public class A
{
    protected static void Foo<T>()
    {
        // use typeof(T)
    }
}

public class B : A
{
    public static void Foo()
    {
        A.Foo<B>();
    }
}