Natasha相关辅助类 (六)

这篇具有很好参考价值的文章主要介绍了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)}");
        }
            
    }
}

运行结果:

Natasha相关辅助类 (六)

AvailableNameReverser.GetAvailableName

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

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

运行结果:

Natasha相关辅助类 (六)

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 "";
}

结果截图:

Natasha相关辅助类 (六)

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方法");
        }
}

结果截图:

Natasha相关辅助类 (六)文章来源地址https://www.toymoban.com/news/detail-447944.html

到了这里,关于Natasha相关辅助类 (六)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 怎么获得ip地址?释放和重新获得IP地址的方法

    有时候电脑会变慢或者ip起冲突,这需要重新换一个IP地址,可以按以下步骤操作。 方法一: 1、右击电脑右下角网络图标,打开“网络和共享中心”。 2、点击左侧“更改适配器设置” 3、选择你用的网路“右击”选择“禁用” 4、选择你用的网路“右击”选择“启用” 方法

    2024年02月08日
    浏览(37)
  • gg怎样获得root权限,gg怎么获得root权限

    gg修改器获得root权限的方法如下: 1、打开下载gg修改器。 2、接下来点击设置,选择应用。 3、接着点击权限管理。 4、然后选择gg修改器。 5、接着点击下方的更多权限。 6、最后开启所有权限即可获取root。 Root权限是管理员权限,只有拥有了这个权限才可以将原版系统刷成其

    2024年02月04日
    浏览(43)
  • 力扣 -- 740. 删除并获得点数

    题目链接:740. 删除并获得点数 - 力扣(LeetCode)  下面是用动态规划的思想解决这道题的过程,相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 参考代码:  以上就是用动态规划的思想分析这道题目的整个过程啦,你学会了吗?如果以上题解对你有所帮助,那么

    2024年02月12日
    浏览(57)
  • 如何获得微软MVP徽章

    要成为微软MVP,需要在特定领域成为专家,并积极参与社区,为其他人提供帮助和支持。以下是一些步骤可以帮助你成为MVP: 在特定领域成为专家:要成为MVP,需要在某个领域具有专业知识和经验。这可以通过阅读相关书籍,参加课程或讲座,以及实践工作来实现。 积极参

    2024年02月04日
    浏览(36)
  • java如何获得当前日期

    如何用java语言 获得系统当前日期 java语言 获得系统当前日期: 1、Date date=new Date();这个是java提供的时间类,可以从中取出,年、月日、时、分、秒 2、SimpleDateFormat这个是时间格式类,对时间进行格式化 String time=new SimpleDateFormat(\\\"HH:mm:ss\\\").format(new Date()) time=15:02:03 String time=new

    2024年02月05日
    浏览(35)
  • 忠诚之源:如何获得铁粉?

    铁粉(Iron Fan)是指对某个人、团体、品牌或作品极度热爱和支持的粉丝群体。他们通常表现出对其偶像的高度忠诚和热情,积极参与和支持其活动、作品或品牌推广。 以下是关于铁粉的一些详细说明: 忠诚度和热情:铁粉对其偶像表现出非常高的忠诚度和热情,他们愿意为

    2024年02月08日
    浏览(34)
  • CSDN如何获得铁粉

    最近看到CSDN也是有这个活动,我也想参加一下,现在我就为大家分享一下怎么样获得铁粉吧。 提供有价值的内容是获得粉丝的基础。在写文章时,需尽可能深入地了解该领域的知识,可以适当地使用例子、案例等进行论证。此外,内容要紧跟时代潮流,需要提供的是别人没

    2024年02月08日
    浏览(39)
  • 免费获得Office365

    Office365开发版E5是为开发人员提供的,是微软的官方活动,申请Office 365开发者计划可以获得为期3个月的免费Office365 E5。而E5计划就包含了25个用于所有Office 365 应用的许可证。 Microsoft 365开发者人员中心 2、登录账号 3、注册365开发人员,国家填China,公司随便填,然后接受条款

    2024年02月08日
    浏览(38)
  • WSL获得Ubuntu系统

    第一步: 第二步:按照图中顺序进行 第三步:重启电脑(很重要) 第四步:按照前两步过程检查 第一步:下载Ubuntu,打开,进行设置,下次使用打开即可 第一步:在应用商店下载Terminal,搜索后选择第一个。 第二步:下载后点开,如图所示 第三步:更改设置点击箭头,选

    2024年02月13日
    浏览(24)
  • 【aigc辅助绘画流程】blender+stableDiffusion+chatgpt辅助建立3D插画背景

    首先还是先上效果图吧。 这是一张用stable diffusion生成的照片,我们最好去选用这种相对正透视的照片(特别是像我这种透视功底本来就不咋地的半桶水美术)。 通过该照片直接映射到场景立方体中(注意这里删掉了正对摄像机的面) 简单建模赋予场景体积感,并实现基于摄

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包