当前位置: 首页 > 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/447095/

相关文章:

  • 漳州最便宜的网站建设价格做网站多少钱保定遨游免费
  • 做网站麻烦不做网站除了域名还需要什么
  • 用wordpress做的站点手机网站模版
  • 怎么快速做网站文章织梦手机网站教程视频
  • 网站建设与管理适合女生学吗昆明百度seo
  • 郑州网站建设修改wordpress站群是什么
  • 天津重型网站建设风格购物网站需要做的功能
  • 网站设计代码龙华网站建设方案书例文
  • 国内男女直接做的视频网站百度收录需要多久
  • php企业网站源码蓝色云南省建设厅定额网站
  • 怎么让网站快速被收录专门做产品定制的网站
  • qq建设网站首页公司网站的设计与实现
  • 做网站 学php哪一部分不干胶网站做最好的
  • 牛商网网站建设多少钱易站通这个网站怎么做
  • 成都 企业网站建设公司文本中设置网站超链接怎么做
  • 武宁网站ui专业设计自己开发一款app软件
  • 做网站不用tomcat行吗给朋友做的相册网站没有了
  • php网站开发范例罗村网站制作公司
  • 河南做网站公司报价珠海外贸网站建设
  • 网站做图分辨率是多少合适信用公示信息系统官网
  • 网站专题模板下载境外网站 icp备案
  • 建设网站需要收费吗怎么查公司的邮箱
  • 昆山网站建设电话wordpress关键词排名
  • 网站建设与维护招聘条件杭州网站制作
  • 马边彝族移动网站建设怎么用电脑做网站服务器吗
  • 网站备案邮寄资料企业网站设计wordpress
  • 有什么网站可以做投票网站建设scyiyou
  • 建设企业网站企业微网站 制作
  • 可以做编程题的网站成都seo学徒
  • 网站建设有哪三部网站建设优化服务平台