怪奇物语

怪奇物语

首页 新随笔 联系 管理

动态创建对象,Activator.CreateInstance(),抽象类抽象方法,多态

DynamicCreateInstance\Program.cs


// 静态创建
BaseHandler handler = new HelloHandler();
handler.Execute(); // 只能处理Hello



// 动态创建
System.Console.WriteLine("input 1 or 2:");
string? messageType = System.Console.ReadLine();
Type handlerType = messageType == "1" ? typeof(HelloHandler) : typeof(ByeHandler);
//                         👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
BaseHandler? baseHanlder = Activator.CreateInstance(handlerType) as BaseHandler; // 根据类型创建具体示例,多态 
baseHanlder?.Execute(); // 可以处理任意类

DynamicCreateInstance\BaseHandler.cs




// 👇👇👇👇👇👇
// 抽象类,抽象方法
public abstract class BaseHandler
{
    public abstract void Execute();
}


// 👇👇👇👇👇👇👇👇👇
// 继承抽象类,实现抽象方法
public class HelloHandler : BaseHandler
{
    public override void Execute() => Console.WriteLine("Hello");
}


public class ByeHandler : BaseHandler
{
    public override void Execute() => Console.WriteLine("Bye");
}

DynamicCreateInstance\DynamicCreateInstance.csproj


<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

DynamicCreateInstance\format.bat


cd ..
format.bat

DynamicCreateInstance\run.bat


dotnet run

posted on 2025-07-04 08:00  超级无敌美少男战士  阅读(14)  评论(0)    收藏  举报