我将更好地解释我的意思。
我认为我想要的不可能,但我会尝试。
我有一个静态类,它有这个方法:
public static class Register
{
public static void PrintType<T>(T passedVar) where T : AbstractType
{
Console.WriteLine(typeof(T));
}
}
我有调用此方法的抽象类:
public abstract class AbstractType
{
public void UseStaticMethod() => Register.PrintType(this);
}
以及继承类:
public class InheritingType : AbstractClass { }
实际上,如果我这样做:
InheritingType myVar = new InheritingType();
myVar.UseStaticMethod();
它打印“AbstractType”。是否可以让它打印“InheritingType”?
非常感谢你
我可以看到两种可能的解决方案:要么使用参数,而不是类型
T
public static class Register
{
public static void PrintType<T>(T passedVar) where T : AbstractType
{
// We use passedVar (actual value), not declared type T
Console.WriteLine(passedVar.GetType());
}
}
或
override
UseStaticMethod()
方法:
public abstract class AbstractType
{
public virtual void UseStaticMethod() => Register.PrintType(this);
}
public class InheritingType : AbstractType
{
public override void UseStaticMethod() => Register.PrintType(this);
}