C#动态创建类的实例

C#动态创建类实例
本文介绍了一种在C#中动态创建类实例的方法。通过使用`Type.GetType`获取类型,并借助`Activator.CreateInstance`创建实例。适用于需要灵活实例化不同类的应用场景。
部署运行你感兴趣的模型镜像

C#动态创建类的实例,如果对性能要求不是很高,而且需要动态创建类的实例的时候可以考虑使用以下的方法: http://www.it55.com/

1. 定义两个类:
    // 基类
    public class BaseBusiness
    { }

    // 子类
    public class SampleBusiness : BaseBusiness
    { }
2. 动态创建类的实例
    // 程序集名称
    string assemblyName = "abc.Business";
    // 类名称
    string className = "SampleBusiness";

    // 获得指定名称的类型:程序集名称 + 类名称
    Type type = Type.GetType(assemblyName + "." + className); 精美韩国模版下载http://www.it55.com

    // 创建类型的一个实例
    object obj = Activator.CreateInstance(type);

    // 将实例强制转换成指定的类型
    BaseBusiness curBusiness = (BaseBusiness)obj;

 

(编辑:IT资讯之家 www.it55.com ) 

您可能感兴趣的与本文相关的镜像

EmotiVoice

EmotiVoice

AI应用

EmotiVoice是由网易有道AI算法团队开源的一块国产TTS语音合成引擎,支持中英文双语,包含2000多种不同的音色,以及特色的情感合成功能,支持合成包含快乐、兴奋、悲伤、愤怒等广泛情感的语音。

C#中,动态创建可以借助反射技术来实现。反射可用于动态加载程序集、等,动态创建也属于反射技术的范畴,其本质是将对象或者数据映射成一个对象或者程序集保存起来[^1]。 下面给出一个简单示例,展示如何动态创建一个: ```csharp using System; using System.Reflection.Emit; class Program { static void Main() { // 创建一个动态程序集 AssemblyName assemblyName = new AssemblyName("DynamicAssembly"); AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); // 创建一个动态模块 ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("DynamicModule"); // 创建一个动态 TypeBuilder typeBuilder = moduleBuilder.DefineType("DynamicClass", TypeAttributes.Public); // 定义一个方法 MethodBuilder methodBuilder = typeBuilder.DefineMethod("SayHello", MethodAttributes.Public, typeof(void), Type.EmptyTypes); // 获取IL生成器 ILGenerator il = methodBuilder.GetILGenerator(); // 加载字符串到栈上 il.Emit(OpCodes.Ldstr, "Hello, World!"); // 调用Console.WriteLine方法 il.Emit(OpCodes.Call, typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) })); // 从方法返回 il.Emit(OpCodes.Ret); // 创建型 Type dynamicType = typeBuilder.CreateType(); // 创建实例 object instance = Activator.CreateInstance(dynamicType); // 调用方法 MethodInfo methodInfo = dynamicType.GetMethod("SayHello"); methodInfo.Invoke(instance, null); } } ``` 上述代码首先创建了一个动态程序集和动态模块,接着在模块中定义了一个名为`DynamicClass`的动态,并在该中定义了一个名为`SayHello`的方法。最后,创建了该实例并调用了`SayHello`方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值