首页 > 编程语言 >C#动态加载dll创建对象,并调用方法

C#动态加载dll创建对象,并调用方法

时间:2023-08-21 14:23:59浏览次数:43  
标签:C# 创建对象 dll instance methodInfo null

C#中有一种应用场景,就是根据供应商、服务商、平台等的不同,可以封装不同的类库,但是这些类库都实现同一套接口;

然后在配置文件或者数据库中配置,根据供应商、服务商、平台不同,动态的加载对应的dll,然后创建对象,调用方法;提高系统的扩展性。

 

示例代码:

// See https://aka.ms/new-console-template for more information
using System.Reflection;
using HotelPlatform;

internal class Program
{
    private static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");

        Assembly assembly = Assembly.Load("HotelPlatform");

        string className = "HotelPlatform.Order";
        Type type =  assembly.GetType(className);

        //Order o = new Order();
        //o.InsertOrder();
        if (type != null)
        {
            object instance = Activator.CreateInstance(type);

            string methodName = "InsertOrder";
            MethodInfo methodInfo = instance.GetType().GetMethod(methodName);
            if (methodInfo != null)
            {
                methodInfo.Invoke(instance, null);
            }

        }
    }
}

 

标签:C#,创建对象,dll,instance,methodInfo,null
From: https://www.cnblogs.com/Tpf386/p/17645882.html

相关文章

  • docker
     编写Dockerfile将Dcokerfile文件置于项目根目录下,文件内容如下FROMpython:3.7WORKDIR./docker_demoADD..RUNpipinstall-rrequirements.txtCMD["python","./src/main.py"] ......
  • Asp.net Core Web API 启动时出现报错Failed to load API definition
    1、新建的Asp.netCoreWebAPI项目启动时一般是没有问题的,如果在controller下增加多个操作后再启动会出现swagger的报错-FailedtoloadAPIdefinition,基本是由于以下两种原因,分别排查即可: (1)如上图1位置:默认webapi模板创建时只有一个方法所以没有[action] 当我们增加多个......
  • css 右上角标的效果
    右上角<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>制作角标的方法</title><scriptsrc="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></scrip......
  • cuda11.2升级安装
    1安装指定版本驱动和cuda驱动版本网址:https://developer.nvidia.com/cuda-toolkit-archive下载cuda11.2,以我们服务器为例,进行勾选得到下载命令wgethttps://developer.download.nvidia.com/compute/cuda/11.2.1/local_installers/cuda_11.2.1_460.32.03_linux.runsudo下载完......
  • css 右上角三角形标签样式
    <style>.box{position:relative;height:100px;width:300px;border:1pxsolidgray;box-sizing:border-box;}.sanjiao{position:absolute;top:0;right:0;height:60......
  • 表单自动填充属性 autocomplete
    摘抄自:HTML属性:autocomplete-HTML(超文本标记语言)|MDN(mozilla.org)表单自动填充不同类型<!--该字段期望该值是一个人的全名--><inputname="name"id="name"autocomplete="name"/><!--该字段期望该值是一个电子邮件值--><inputname="email"id=&q......
  • C#与倍福PLC实现ADS通讯
    ​1.引入倍福的TWINCAT的文件引用--管理NUGET程序包--搜索Twincat--选择这个包安装 2.安装完成后,写一个倍福ADS通讯操作类usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Linq;usingSystem.Text;usingSyste......
  • Linux/centos上如何配置管理samba服务器?
    (Linux/centos上如何配置管理samba服务器?)1samba服务相关知识samba服务器可使用户在异构网络操作系统之间进行文件系统共享;samba服务器提供了在Windows环境下共享Linux中用户目录的一个工具;在linux中安装samba后,只需在windows中做一些登陆即可访问。1.1SMB协议Windows系......
  • Linux/centos上如何配置管理samba服务器?
    (Linux/centos上如何配置管理samba服务器?)1samba服务相关知识samba服务器可使用户在异构网络操作系统之间进行文件系统共享;samba服务器提供了在Windows环境下共享Linux中用户目录的一个工具;在linux中安装samba后,只需在windows中做一些登陆即可访问。1.1SMB协议Windows系......
  • javascript学习笔记day4
    今天重点学习了数组,老实说学过了c#和python的数组,但是今天重新接触js的数字还是有很多要重新学习的,下面是今天的笔记查询条件五个以上时,switch的效果比iflese高两倍以上.letarr=[]声明数组letarr=newArray(1,2,3,4)声明数组修改数组letarr=['a','b','c']for(letinde......