suchen
HeimBackend-EntwicklungC#.Net-Tutorialc# Laden Sie die DLL-Datei dynamisch und implementieren Sie die Analyse des Aufrufs der darin enthaltenen Methoden (empfohlen).

下面小编就为大家带来一篇c# 动态加载dll文件,并实现调用其中的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

以下是测试代码:

新建一个classlibrary,包含两个类class1和class2,这两个类中分别有一个方法,都是返回一个字符串,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace mydll
{
  public class Class1
  {
    public Class1()
    {

    }
    public string sayhello()
    {
      return "hello,word!";
    }
  }

  public class Class2
  {
    public Class2()
    {

    }

    public string saybeautiful()
    {
      return "beautiful,very good!";
    }
  }

}

在编译完成后会生成一个mydll.dll动态链接库,然后新建一个winform项目(其他也可以,调试用):

private void button1_Click(object sender, EventArgs e)
    {
      string path = @"D:\123\mydll\mydll\bin\Debug\mydll.dll";


      //Byte[] byte1 = System.IO.File.ReadAllBytes(path);//也是可以的
      //Assembly assem = Assembly.Load(byte1);

      Assembly assem = Assembly.LoadFile(path);


      //string t_class = "mydll.Class1";//理论上已经加载了dll文件,可以通过命名空间加上类名获取类的类型,这里应该修改为如下:

      //string t_class = "mydll.Class1,mydll";//如果你想要得到的是被本工程内部的类,可以“命名空间.父类……类名”;如果是外部的,需要在后面加上“,链接库名”;

      //再次感谢thy38的帮助。

      //Type ty = Type.GetType(t_class);//这儿在调试的时候ty=null,一直不理解,望有高人可以解惑

      Type[] tys = assem.GetTypes();//只好得到所有的类型名,然后遍历,通过类型名字来区别了
      foreach (Type ty in tys)//huoquleiming
      {
        if (ty.Name == "Class1")
        {
          ConstructorInfo magicConstructor = ty.GetConstructor(Type.EmptyTypes);//获取不带参数的构造函数
          object magicClassObject = magicConstructor.Invoke(new object[] { });//这里是获取一个类似于类的实例的东东

          //object magicClassObject = Activator.CreateInstance(t);//获取无参数的构造实例还可以通过这样
          MethodInfo mi = ty.GetMethod("sayhello");
          object aa=mi.Invoke(magicClassObject, null);
          MessageBox.Show(aa.ToString());//这儿是执行类class1的sayhello方法
        }
        if (ty.Name == "Class2")
        {
          ConstructorInfo magicConstructor = ty.GetConstructor(Type.EmptyTypes);
          //获取不带参数的构造函数,如果有构造函数且没有不带参数的构造函数时,这儿就不能这样子啦
          object magicClassObject = magicConstructor.Invoke(new object[] { });
          MethodInfo mi = ty.GetMethod("saybeautiful");
          object aa = mi.Invoke(magicClassObject, null);//方法有参数时,需要把null替换为参数的集合
          MessageBox.Show(aa.ToString());
        } 
      }

      //AppDomain pluginDomain = (pluginInstanceContainer[key] as PluginEntity).PluginDomain;
      //if (pluginDomain != null)
      //{
      //  AppDomain.Unload(pluginDomain);
      // } 

    }

 以上就是c# 动态加载dll文件,并实现调用其中的方法(推荐)分析的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
C# .NET: Erstellen von Anwendungen mit dem .NET -ÖkosystemC# .NET: Erstellen von Anwendungen mit dem .NET -ÖkosystemApr 27, 2025 am 12:12 AM

Wie erstelle ich Anwendungen mit .NET? Erstellen Anwendungen mit .NET können in den folgenden Schritten erreicht werden: 1) Verstehen Sie die Grundlagen von .NET, einschließlich C# Sprache und plattformübergreifender Entwicklungsunterstützung; 2) Kernkonzepte wie Komponenten und Arbeitsprinzipien des .NET -Ökosystems lernen; 3) Master Basic und Advanced Nutzung, von einfachen Konsolenanwendungen bis hin zu komplexen Webapis- und Datenbankvorgängen; 4) Mit gemeinsamen Fehlern und Debugging -Techniken wie Konfigurations- und Datenbankverbindungsproblemen vertraut sein; 5) Optimierung der Anwendungsleistung und Best Practices wie asynchrone Programmieren und Zwischenspeichern.

C# als vielseitige .NET -Sprache: Anwendungen und BeispieleC# als vielseitige .NET -Sprache: Anwendungen und BeispieleApr 26, 2025 am 12:26 AM

C# wird häufig in Anwendungen auf Unternehmensebene, Spieleentwicklung, mobilen Anwendungen und Webentwicklung verwendet. 1) In Anwendungen auf Unternehmensebene wird C# häufig für ASP.NetCore zur Entwicklung von WebAPI verwendet. 2) In der Spielentwicklung wird C# mit der Unity Engine kombiniert, um die Rollenkontrolle und andere Funktionen zu realisieren. 3) C# unterstützt Polymorphismus und asynchrone Programmierung, um die Code -Flexibilität und die Anwendungsleistung zu verbessern.

C# .NET für Web-, Desktop- und Mobile -EntwicklungC# .NET für Web-, Desktop- und Mobile -EntwicklungApr 25, 2025 am 12:01 AM

C# und .NET eignen sich für Web-, Desktop- und Mobile -Entwicklung. 1) In der Webentwicklung unterstützt ASP.NetCore die plattformübergreifende Entwicklung. 2) Die Desktop -Entwicklung verwendet WPF und Winforms, die für unterschiedliche Anforderungen geeignet sind. 3) Mobile Entwicklung realisiert plattformübergreifende Anwendungen über Xamarin.

C# .NET -Ökosystem: Frameworks, Bibliotheken und ToolsC# .NET -Ökosystem: Frameworks, Bibliotheken und ToolsApr 24, 2025 am 12:02 AM

Das C#.NET -Ökosystem bietet reichhaltige Frameworks und Bibliotheken, mit denen Entwickler Anwendungen effizient erstellen können. 1.asp.netcore wird verwendet, um Hochleistungs-Webanwendungen zu erstellen. Durch das Verständnis der Nutzung und Best Practices dieser Tools können Entwickler die Qualität und Leistung ihrer Anwendungen verbessern.

Bereitstellen von C# .NET-Anwendungen in Azure/AWS: Eine Schritt-für-Schritt-AnleitungBereitstellen von C# .NET-Anwendungen in Azure/AWS: Eine Schritt-für-Schritt-AnleitungApr 23, 2025 am 12:06 AM

Wie bereitete ich eine C# .NET -App für Azure oder AWS bereit? Die Antwort ist, AzureAppservice und Awselasticbeanstalk zu verwenden. 1. Automatisieren Sie bei Azure die Bereitstellung mit AzureAppservice und AzurePipelines. 2. Verwenden Sie bei AWS Amazon ElasticbeanSpalk und AWSLambda, um Bereitstellungen und serverlosen Computer zu implementieren.

C# .NET: Eine Einführung in die leistungsstarke ProgrammierspracheC# .NET: Eine Einführung in die leistungsstarke ProgrammierspracheApr 22, 2025 am 12:04 AM

Die Kombination von C# und .NET bietet Entwicklern eine leistungsstarke Programmierumgebung. 1) C# unterstützt Polymorphismus und asynchrone Programmierung, 2) .NET bietet plattformübergreifende Funktionen und gleichzeitige Verarbeitungsmechanismen, wodurch sie in der Entwicklung von Desktop-, Web- und mobilen Anwendungen häufig verwendet werden.

.NET Framework vs. C#: Dekodierung der Terminologie.NET Framework vs. C#: Dekodierung der TerminologieApr 21, 2025 am 12:05 AM

.NetFramework ist ein Software -Framework, und C# ist eine Programmiersprache. 1..NetFramework bietet Bibliotheken und Dienste, die Desktop-, Web- und mobile Anwendungsentwicklung unterstützen. 2.C# ist für .Netframework entwickelt und unterstützt moderne Programmierfunktionen. 3..NETFRAMEWORK verwaltet die Codeausführung über CLR, und der C# Code wird in IL zusammengestellt und wird von CLR ausgeführt. V. 5. Zu den häufigen Fehlern zählen Typenkonvertierung und asynchrone Programmieradrocken. Visualstudio -Tools sind zum Debuggen erforderlich.

Demystifizierung C# .NET: Ein Überblick für AnfängerDemystifizierung C# .NET: Ein Überblick für AnfängerApr 20, 2025 am 12:11 AM

C# ist eine moderne, objektorientierte Programmiersprache, die von Microsoft entwickelt wurde, und .NET ist ein Entwicklungsrahmen von Microsoft. C# kombiniert die Leistung von C und die Einfachheit von Java und eignet sich zum Aufbau verschiedener Anwendungen. Das .NET -Framework unterstützt mehrere Sprachen, bietet Müllsammlungsmechanismen und vereinfacht die Speicherverwaltung.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software