首页 / 问答 / [C#/.NET 5]C#/.NET 5/.NET Core等应用程序中运行时在基类(父类)中动态获取子类的类型或类名?

[C#/.NET 5]C#/.NET 5/.NET Core等应用程序中运行时在基类(父类)中动态获取子类的类型或类名?

.NET C# 反射 Reflection .NET 5 1.72K 次浏览
0

如题,在C#、.NET 5,.NET Core等应用程序中,如何运行时在基类(父类)中动态获取子类的类型或类名呢?
比如,在下面示例代码中,需要在MessageSender抽象基类中获取其子类的类名:

/// 
/// 消息发送抽象基类
/// 
public abstract class MessageSender
{
    public virtual void Send(string message)
    {
        var className = ""; // 这里需要获取子类的类名
        Console.WriteLine($"准备由消息发送程序[{className}]发送消息...");
        DoWork(message);
    }

    protected abstract void DoWork(string message);
}

/// 
/// SMS消息发送程序
/// 
public class SmsSender : MessageSender
{
    protected override void DoWork(string message)
    {
        Console.WriteLine($"正在发送消息:{message},请稍候...");
    }
}

应该如何实现呢?

回复 [×]
提交评论
请输入评论内容

1 个回答

  • 0

    在C#编程语言中,对象实例内置了GetType()方法来获取当前实例的Type类型,然后我们可以访问这个TypeName属性以获取当前实例的类名,如下:

    完整的示例代码如下:

    运行结果如下:

    Rector的个人主页

    Rector

    2021-07-13 回答

    我来回答