首页 > 其他分享 >Natasha相关辅助类 (六)

Natasha相关辅助类 (六)

时间:2023-05-17 16:26:20浏览次数:28  
标签:辅助 Dictionary Console Demo6 typeof WriteLine 相关 Type Natasha

AccessReverser.GetAccess

获得相关类的访问级别

AccessReverser.GetAccess() 可以是泛型

AccessReverser.GetAccess方法中的参数可以是

属性名称 说明
PropertyInfo 获取属性的访问级别
MethodInfo 获取方法的访问级别
EventInfo 获取事件的访问级别
FieldInfo 获取字段的访问级别
Type 获取类型的访问级别
T 获取泛型的访问级别
internal class Demo6
{
    public String Field  = "";
    public void Domain()
    {
        NatashaManagement.Preheating();
        //获取访问级别
        String strAccess = AccessReverser.GetAccess<Object>();
        // 获取Type
        Type ty = typeof(Demo6);
        // 获取Demo6的访问级别
        Console.WriteLine($"Type Access is {AccessReverser.GetAccess(ty)}");
        // 获取Field字段
        FieldInfo? fieldInfo = ty.GetField("Field");
        if (fieldInfo != null) {
            //输出Field字段的访问级别
            Console.WriteLine($"MethodText Access is {AccessReverser.GetAccess(fieldInfo)}");
        }
        // 获取MethodText字段
        MethodInfo? domain = ty.GetMethod("Domain");
        if (domain != null) {
            //输出MethodText字段的访问级别
            Console.WriteLine($"MethodText Access is {AccessReverser.GetAccess(domain)}");
        }
            
    }
}

运行结果:

AvailableNameReverser.GetAvailableName

获取Type的可用名,参数为Type

// 结果为:namespace+类名
Console.WriteLine($"获取Type的可用名:{AvailableNameReverser.GetAvailableName(ty)}");

运行结果:

DeclarationReverser.GetMethodDeclaration

展示函数信息,参数为MethodInfo

public void Domain()
{
    //MethodInfo? domain = ty.GetMethod("Domain");以下部分修改
    // 获取Test方法
    MethodInfo? test = ty.GetMethod("Test");
    if (test != null) {
        Console.WriteLine($"函数信息: {DeclarationReverser.GetMethodDeclaration(test)}");
        //输出MethodText字段的访问级别
        Console.WriteLine($"Test Access is {AccessReverser.GetAccess(test)}");
    }
}
public String Test(in String arg1, out int arg2, ref float arg3) {
    arg2 = 0;
    return "";
}

结果截图:

TypeNatashaExtension

Natasha的类型拓展

类名 参数 返回 说明
IsImplementFrom this Type ,Type iType bool 当前类是否实现了某接口,iType为接口类型
IsImplementFrom this Type bool T为接口类型
GetRuntimeName this Type string 获取运行时类名
GetDevelopName this Type string 获取完整类名
GetDevelopNameWithoutFlag this Type string 同GetDevelopName
GetAvailableName this Type string 将类名替换成 文件名可使用的名字
IsSimpleType this Type bool 判断是否为值类型,字符串类型,委托类型,Type类型,及委托的子类型其中之一
//////////////////创建的接口
public interface ITest {
	public void IClass();
}
internal class Demo6: ITest{
	public void testTypeNatashaExtension() {
		//初始化
		NatashaManagement.Preheating();
        bool bImplement = typeof(Demo6).IsImplementFrom(typeof(ITest));
        // Class 类的情况
        Console.WriteLine("Demo6类的相关结果如下:");
        Console.WriteLine($"Demo6 是否实现了 ITest 的接口:{bImplement}");
        Console.WriteLine($"GetRuntimeName 结果:\"{typeof(Demo6).GetRuntimeName()}\"");
        Console.WriteLine($"GetDevelopName 结果:\"{typeof(Demo6).GetDevelopName()}\"");
        Console.WriteLine($"GetDevelopNameWithoutFlag 结果:\"{typeof(Demo6).GetDevelopNameWithoutFlag()}\"");
        Console.WriteLine($"GetAvailableName 结果:\"{typeof(Demo6).GetAvailableName()}\"");
        Console.WriteLine($"IsSimpleType 结果:\"{typeof(Demo6).IsSimpleType()}\"");
        // Dictionary<int, String>的参数
        Console.WriteLine("Dictionary<int, String> 的相关结果如下:");
        Console.WriteLine($"GetRuntimeName 结果:\"{typeof(Dictionary<int, String>).GetRuntimeName()}\"");
        Console.WriteLine($"GetDevelopName 结果:\"{typeof(Dictionary<int, String>).GetDevelopName()}\"");
        Console.WriteLine($"GetDevelopNameWithoutFlag 结果:\"{typeof(Dictionary<int, String>).GetDevelopNameWithoutFlag()}\"");
        Console.WriteLine($"GetAvailableName 结果:\"{typeof(Dictionary<int, String>).GetAvailableName()}\"");
        Console.WriteLine($"IsSimpleType 结果:\"{typeof(Dictionary<int, String>).IsSimpleType()}\"");
        // Dictionary<String, HashSet<List<String>>>的参数
        Console.WriteLine("Dictionary<String, HashSet<List<String>>> 的相关结果如下:");
        Console.WriteLine($"GetRuntimeName 结果:\"{typeof(Dictionary<String, HashSet<List<String>>>).GetRuntimeName()}\"");
        Console.WriteLine($"GetDevelopName 结果:\"{typeof(Dictionary<String, HashSet<List<String>>>).GetDevelopName()}\"");
        Console.WriteLine($"GetDevelopNameWithoutFlag 结果:\"{typeof(Dictionary<String, HashSet<List<String>>>).GetDevelopNameWithoutFlag()}\"");
        Console.WriteLine($"GetAvailableName 结果:\"{typeof(Dictionary<String, HashSet<List<String>>>).GetAvailableName()}\"");
        Console.WriteLine($"IsSimpleType 结果:\"{typeof(Dictionary<String, HashSet<List<String>>>).IsSimpleType()}\"");
        }
        public void IClass()
        {
            Console.WriteLine("实现ITest的IClass方法");
        }
}

结果截图:

标签:辅助,Dictionary,Console,Demo6,typeof,WriteLine,相关,Type,Natasha
From: https://www.cnblogs.com/wanghun315/p/17409141.html

相关文章

  • 基金相关风险收益指标
    1、波动率(区间收益率标准差)\[波动率=\sqrt{\sum(R_i-\barR)^2/(n-1)}\\其中R_i表示周期收益率,比如日收益率、周收益率等\\\barR表示平均收益率\\n表示收益率R_i的个数\\\]2、年化所有指标的年化,都是在普通指标的基础上乘一个年化系数,如年化波动率如下:\[年化波......
  • .NET入门相关学习
    2023/05/17记录html标签使用练习1<divstyle="background-color:lightgreen;text-align:center;width:200px;margin:10px;display:inline-block;vertical-align:top">2<pstyle="text-align:left;margin:10px">(居左)</p>3......
  • Nginx 常用的基础配置(web前端相关方面)
    基础配置userroot;worker_processes1;events{worker_connections10240;}http{log_format'$remote_addr-$remote_user[$time_local]''"$request"$st......
  • Linux系统Mariadb初始化相关(ubuntu)
    #事先声明,此文是一边写一边操作的,中间可能有不一致的地方,大体思路就是参照windows下的目录规范,将mysql的各目录及文件进行类比放置,然后执行重建数据库命令,也许你只是想修改下data目录,那么下面的指令按需修改即可#数据库重建sudomysql_install_db--defaults-file=/opt/mysql/......
  • 智能家居生态迎来超强辅助
    在家居领域,中商行业研究所预测,2023年中国智能家居市场可达7157.1亿元。未来5年,中国智能家居产业将继续快速发展。2027年,市场规模预计将超过1.1万亿亿元人民币。那么未来智能家居发展的突破口又在何方?智能终端设备运行小程序的概念在智能终端设备中运行小程序,是指在不需要下载和......
  • Kali Linux使用 airmon-ng 等相关命令爆破 Wifi 密码
    首先我是在淘宝上买的免驱动的无线网卡,插上一般可以直接使用,不过买回来发现无法连接一些wifi,是wifi除了满格信号,就是没有信号黑色的。我还以为这个wifi信号怎么这么差,联系客服发现是最新的kali需要安装一个软件包realtek-rtl8188eus-dkms淘宝客服的教程:kali单频无线网卡驱动更......
  • Java-Day-22( 线程一:相关概念 + 继承 Thread 类 + 实现 Runnable 接口 + JConsole 监控
    Java-Day-22线程相关概念程序:是为完成特定任务、用某种语言编写的一组指令的集合(就是平常所写代码)进程:运行中的程序,例如,打开一个软件就启动一个进程,操作系统就会给每个启动的软件分配一新的内存(活动进程占用的物理内存)空间进程是程序的一次执行过程,或是正在运......
  • 享受探险快感,DayZ辅助工具为你保驾护航
     当今,有越来越多的玩家涌入了游戏世界。其中,DayZ是一个非常受欢迎的游戏,它以生存、探索和射击为主题,吸引了众多玩家的关注。但是,这款游戏的难度非常大,新手玩家往往无法顺利完成游戏目标。因此,有越来越多的玩家开始寻求DayZ辅助(https://dayz.scvmn.com/)工具的帮助。在本篇......
  • 关于有朋友遇到的使用 ChatGPT 获得 SAP 相关问题答案不够准确的困扰和我的解答
    笔者的SAP开发技术交流群里,有朋友提问:求教一下,哪位大侠知道查看主配方(事务代码C203)的界面里面,那个工序的资源字段是怎么取出来的(从哪个数据表来的)?多谢这个朋友反馈,在他提问之前,询问了ChatGPT同样的问题,但感觉ChatGPT回答的质量不高:以下是我的解答:ChatGPT不是......
  • Linux基础21 进程介绍, 进程监控状态ps, 进程相关命令pstree,pgrep,pidof, 动态进程监
    1.进程的管理:当我们运行一个程序,那么我们将该程序叫进程 进程线程协程 linux起服务会有给这个服务预分配的内存结构,windows没有 2.为什么要学进程管理?为了管理架构的服务 3.程序和进程的区别1)程序:开发写出来的代码,程序是永久存在的。 2)进程:它会随着程序的终止而销......