当前位置: 首页 > news >正文

安徽网站推广营销设计微信平台做微文网站链接

安徽网站推广营销设计,微信平台做微文网站链接,域名注册商排名,北京网站建设网络公司文章目录 前言反射是什么?常用类型操作SummryPropertyInfoMethodInfo无参函数运行 有参函数运行,获取paramterInfo 总结 前言 我之前写了一篇Attribute特性的介绍,成功拿到了Attribute的属性,但是如果把Attribute玩的溜,那就要彻…

文章目录

  • 前言
  • 反射是什么?
  • 常用类型操作
    • Summry
    • PropertyInfo
    • MethodInfo
      • 无参函数运行
    • 有参函数运行,获取paramterInfo
  • 总结

前言

我之前写了一篇Attribute特性的介绍,成功拿到了Attribute的属性,但是如果把Attribute玩的溜,那就要彻底了解反射。

C#高级语法 Attribute特性详解和类型,方法,变量附加特性讲解

反射是什么?

反射就是对一个类里面所有的元素的彻底描述。我们可以从特性看出C# 对基于反射的类型定义了。

【C#进阶】C# 特性

在这里插入图片描述

我们声明一个简单的类


namespace NETCore8.Models
{public class TestModel{public int Id { get; set; }private string name;public void Send(){}/// <summary>/// 发送测试/// </summary>/// <param name="name"></param>public void TestSend(string name){}public TestModel(){}}
}

在这里插入图片描述

常用类型操作

我们接下来的操作全部都是基于共有属性进行的操作

Summry

但是Summry不属于编译内容,属于注解,如果想要获取Summry信息,则需要安装一个Nuget:Namotion.Refelction

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PropertyInfo

       static void Main(string[] args){//声明一个简单的bindingFlagsBindingFlags bindingFlags = BindingFlags.Public | BindingFlags.Instance;TestModel model = new TestModel();model.Id = 5;var propertyInfo =  model.GetType().GetProperty("Id");Console.WriteLine("属性名:"+ propertyInfo?.Name);Console.WriteLine("属性值:" + propertyInfo?.GetValue(model));Console.WriteLine("属性类型:" + propertyInfo?.PropertyType);propertyInfo.SetValue(model, 10);Console.WriteLine("修改后的属性值:" + propertyInfo.GetValue(model));//如果你安装了Namotion.Refelction,可以使用封装好的扩展方法Console.WriteLine("Namotion.Refelction:" + model.TryGetPropertyValue<int>("Id"));Console.WriteLine("Hello, World!");Console.ReadKey();}

在这里插入图片描述

MethodInfo

无参函数运行

在这里插入图片描述

        static void Main(string[] args){TestModel model = new TestModel();var methodInfo = model.GetType().GetMethod("Send");if (methodInfo != null){Console.WriteLine($"方法名:{methodInfo.Name}");Console.WriteLine($"返回值:{methodInfo.ReturnType}");Console.WriteLine("运行方法");methodInfo.Invoke( model, null );}Console.WriteLine("Hello, World!");Console.ReadKey();}

在这里插入图片描述

有参函数运行,获取paramterInfo

在这里插入图片描述

internal class Program
{static void Main(string[] args){TestModel model = new TestModel();var methodInfo = model.GetType().GetMethod("TestSend");//如果你装了Namotion.Refelction,可以使用Xml方法获取注解if (methodInfo!= null ){Console.WriteLine($"方法名:{methodInfo.Name}");Console.WriteLine($"返回值:{methodInfo.ReturnType}");Console.WriteLine($"方法注解:{methodInfo.GetXmlDocsSummary()}");var parmeters = methodInfo.GetParameters();foreach (var item in parmeters){Console.WriteLine($"参数名:{item.Name}");Console.WriteLine($"参数类型:{item.ParameterType}");Console.WriteLine($"参数注解:{item.GetXmlDocs()}");}Console.WriteLine("运行方法,注意无法解决重载问题,因为重载的方法名相同,会直接抛出异常");Console.WriteLine("运行方法的参数类型和个数必须完全一致");methodInfo.Invoke(model, new object[] { "入参",1 });}Console.WriteLine("Hello, World!");Console.ReadKey();}
}

在这里插入图片描述

总结

我们将反射类型的常用内容已经讲解完了。接下来我们将主要讲解Attribute的详细运用。经过这么久的铺垫,我们终于可以开始正常的讲解了。

http://www.yayakq.cn/news/48086/

相关文章:

  • 长春网站排名优化费用wordpress关闭会员
  • WordPress自带写文章湖南seo公司
  • 可做区域代理的网站开发公司复工复产工作方案
  • 网站建设好学吗wordpress文章版权主题插件
  • 吉林省 网站建设十大高端网站建设
  • 深圳网站建设公司平台wordpress外网访问不了
  • 蚌埠做网站哪家好pageadmin免费模板下载
  • o2o平台有哪些可以入驻短视频seo排名
  • 网站制作入门课程logo 在线生成
  • 建设网站公司东莞平潭综合实验区交通与建设网站
  • 延边app网站开发wordpress中如何设置文章在新窗口打开 (
  • 如何制作一个自己的网站?wordpress用户注册打文章
  • 网站制作过程合理的步骤是怎么样做免费网站
  • 海南电商网站建设企业做网站都需要准备哪些材料
  • 松原建设网站西安网络推广平台公司
  • 营销加盟网站建设长沙网站制作电话
  • 福建省建设监理公司网站可以拿自己电脑做网站主机
  • 专门做外贸的网站百度官方营销推广平台官网
  • 买虚机送网站建设怎么把自己的网站发布到网上
  • 网站制作设计报价成都住建局官网有问题怎么办
  • 广州知名网站建设性价比高个人店铺名字大全
  • 莱芜中考网站青海企业网站开发定制
  • 成都网站seo排名大连开发区信息服务平台
  • 网站备案产品信息错误关于wordpress更新时无法创建目录
  • h5开网站开发教程广告公司名称大全最新
  • 招标网站免费微信 网站应用开发
  • 用flash做的网站欣赏做网站带阿里云服务器多少钱
  • 鲜花网站建设企划书发布了一个网站 显示建设中
  • 网站图片怎么做alt网站管理助手怎么使用
  • 网站建设代码流程网页广告多少钱