C#用反射机制调用dll文件的字段、属性和方法

1、创建dll文件

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

namespace CLStudent
{
    public class Student
    {
        //字段
        public string Name = "Tom";
        //属性
        public double ChineseScore { get; set; } = 80;
        public double MathScore { get; set; } = 90;
        //方法
        public double TotalScore(double cScore,double mScore)
        {
            double score = cScore + mScore;
            return score;
        }
    }
}

2、调用dll

using System.Reflection;

namespace ReflectionApp
{
    
    internal class Program
    {
        static void Main(string[] args)
        {
            //方法一:用指定的名称加载程序集
            //1、添加程序集的引用
            //2、加载程序集
            //Assembly assembly = Assembly.Load("CLStudent, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
            //Assembly assembly = Assembly.Load("CLStudent");
            //方法二:用指定的路径加载程序集
            Assembly assembly = Assembly.LoadFile("F:\\Winform\\ReflectionApp\\CLStudent\\bin\\Debug\\CLStudent.dll");
            //Assembly assembly = Assembly.LoadFrom("F:\\Winform\\ReflectionApp\\CLStudent\\bin\\Debug\\CLStudent.dll");
            //方法三:用指定的文件名加载程序集
            //1、添加程序集的引用
            //2、加载程序集
            //Assembly assembly = Assembly.LoadFrom("CLStudent.dll");

            Type type = assembly.GetType("CLStudent.Student");
            object StudentInstance = Activator.CreateInstance(type);


            FieldInfo fieldInfo = type.GetField("Name");
            string fieldValue = (string)fieldInfo.GetValue(StudentInstance);
            Console.WriteLine($"Student Name 字段值为{fieldValue}");

            PropertyInfo propertyInfo = type.GetProperty("ChineseScore");
            double propertyValue = (double)propertyInfo.GetValue(StudentInstance);
            Console.WriteLine($"Student {fieldValue} ChineseScore值为{propertyValue}");

            propertyInfo = type.GetProperty("MathScore");
            propertyValue = (double)propertyInfo.GetValue(StudentInstance);
            Console.WriteLine($"Student {fieldValue} MathScore值为{propertyValue}");

            MethodInfo methodInfo = type.GetMethod("TotalScore");
            object output = methodInfo.Invoke(StudentInstance, new object[] { 100,90 });
            Console.WriteLine($"Student TotalScore 方法返回值为{output}");
            Console.ReadKey();
        }
    }
}

3、运行结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/776571.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python系列】数字的bool值

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

1990-2021年297个地级市RD内部经费支出数据

地级市内部经费支出数据为研究者提供了了解地方政府在科研活动上的投入情况的重要视角。以下是对297个地级市R&D内部经费支出数据的介绍: 数据简介 定义:地级市内部经费支出是指地级市政府在一定时期内用于科研活动的经费支出。用途:这…

前端面试题(CSS篇三)

一、简单介绍使用图片 base64 编码的优点和缺点。 base64是一种图片处理格式,通过特定的算法将图片编码为一长串字符串,在页面显示的时候,可以使用该字符串来代替图片的url属性。 使用base64的优点: 减少一个图片的http请求 使用base64的缺点…

微信⼩程序的电影推荐系统-计算机毕业设计源码76756

摘 要 随着互联网的普及和移动互联网的发展,人们对于获取信息的便捷性和高效性要求越来越高。电影作为一种受众广泛喜爱的娱乐方式,电影推荐系统的出现为用户提供了更加个性化和精准的电影推荐服务。微信小程序作为一种轻量级应用形式,在用户…

Spring Boot Vue 毕设系统讲解1

项目结构 包说明 db:文件夹是存放数据脚本文件的 annotation: 系统自定义注解 config:系统定义的配置类 controller: 系统接口控制器类 dao: 系统dao类编写数据库查询方法和数据库交互 entity:数据库…

【python基础】—如何理解安装程序时要配置Widows和DOS操作系统中的path环境变量?

文章目录 前言一、环境变量是什么?二、为什么需要设置环境变量?三、配置anaconda的环境变量 前言 在安装一些程序的时候, 我们总是需要将安装路径配置到正在使用电脑的环境变量里。为什么要进行这一步呢?本文主要解释Widows和DOS…

c++ word转换为pdf

在windows系统下,使用QAxObject效果是最好的 转60多兆的文件速度还是可以的,不建议使用多线程,因为多线程会多次调用转换函数,导致程序一直运行,只有全部转换完成后,程序才能继续向下运行,但是c…

Cesium 二三维热力图

Cesium 二三维热力图 原理:主要依靠heatmap.js包来实现 效果图:

Java面试八股之MYISAM和INNODB有哪些不同

MYISAM和INNODB有哪些不同 MyISAM和InnoDB是MySQL数据库中两种不同的存储引擎,它们在设计哲学、功能特性和性能表现上存在显著差异。以下是一些关键的不同点: 事务支持: MyISAM 不支持事务,没有回滚或崩溃恢复的能力。 InnoDB…

关于在自行封装的组件库中(使用vue-class-component)使用Vue-i18n无法正常翻译的解决办法

文章目录 介绍背景现象1解决办法 现象2原因分析解决办法 最终方案 介绍 大家或多或少都用过别人封装的组件库,甚至有人或者公司内有自行封装的一些公用组件库,而国际化翻译现在已经是各大项目中必不可少的一个插件了,但组件库中使用 i18n 进…

文章解读与仿真程序复现思路——太阳能学报EI\CSCD\北大核心《绿电交易场景下计及温控负荷的高铁站两阶段调度策略》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

成人高考专升本专业有哪些?深职训学校帮您圆梦

成人高考专升本专业选择多样化 成人高考专升本考试是成人高考的一种考试形式,主要面向已经参加工作的人员,旨在选拔具有高等教育需求的成人考生,录取到高等学校继续深造。成人高考专升本考试的专业选择非常多样化,涵盖了人文社科…

Python酷库之旅-第三方库Pandas(006)

目录 一、用法精讲 10、pandas.DataFrame.to_excel函数 10-1、语法 10-2、参数 10-3、功能 10-4、返回值 10-5、说明 10-6、用法 10-6-1、数据准备 10-6-2、代码示例 10-6-3、结果输出 11、pandas.ExcelFile类 11-1、语法 11-2、参数 11-3、功能 11-4、返回值 …

RNN文献综述

循环神经网络(Recurrent Neural Network,RNN)是一种专门用于处理序列数据的神经网络模型。它在自然语言处理、语音识别、时间序列预测等领域有着广泛的应用。本文将从RNN的历史发展、基本原理、应用场景以及最新研究进展等方面进行综述。 历…

大数据平台之数据同步

数据同步也成为CDC (Chanage Data Capture) 。Change Data Capture (CDC) 是一种用于跟踪和捕获数据库中数据变更的技术,它可以在数据发生变化时实时地将这些变更捕获并传递到下游系统。以下是一些常用的开源 CDC 方案: 1. Flink CDC Flink CDC 是基于 …

Linux——目录结构

基本介绍 Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录"/",然后在根目录下再创建其他的目录 在Linux中,有一句经典的话:在Linux世界里,一切皆文件 Linux中根目录下的目录 具体的…

案例精选 | 聚铭网络助力南京市玄武区教育局构建内网日志审计合规体系

南京市玄武区教育局作为江苏省教育领域的先锋机构,其工作重点涵盖了教育政策的实施、教育现代化与信息化的融合、教育资源的优化、教育质量的提升以及教育公平的促进。在这一背景下,网络安全管理成为了确保教育信息化顺利推进的关键环节之一。 根据玄武…

二进制求和、字符串相加-sting类题型

67. 二进制求和 - 力扣(LeetCode) 两个题目方法完全一样 用两个数据的末尾位相加,从末尾位开始逐位相加,记录进位; class Solution { public:string addBinary(string a, string b) {int end1 a.size() - 1;int end…

【Qwen2部署实战】Ollama上的Qwen2-7B:一键部署大型语言模型指南

系列篇章💥 No.文章1【Qwen部署实战】探索Qwen-7B-Chat:阿里云大型语言模型的对话实践2【Qwen2部署实战】Qwen2初体验:用Transformers打造智能聊天机器人3【Qwen2部署实战】探索Qwen2-7B:通过FastApi框架实现API的部署与调用4【Q…

做有一个有表情且会动的 Finder

作为一只合格的互联网巡回猎犬,今天给大家分享一个有趣且无聊的小工具,摸鱼发呆必备,可以说是一件「无用良品」了。 软件介绍 Mouse Finder 长的跟访达差不多,功能也一样,但有一个重要区别:眼睛会跟随鼠标…