首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在无异常且不使用C#中反射的情况下获取当前方法和类

,可以使用C#中的System.Diagnostics命名空间下的StackTrace类来实现。

StackTrace类提供了获取当前调用堆栈的方法,可以获取当前方法和类的信息。以下是获取当前方法和类的步骤:

  1. 引入System.Diagnostics命名空间:
代码语言:txt
复制
using System.Diagnostics;
  1. 创建一个StackTrace对象:
代码语言:txt
复制
StackTrace stackTrace = new StackTrace();
  1. 获取当前方法信息:
代码语言:txt
复制
StackFrame frame = stackTrace.GetFrame(0);
MethodBase currentMethod = frame.GetMethod();
string methodName = currentMethod.Name;
  1. 获取当前类信息:
代码语言:txt
复制
Type currentClass = currentMethod.DeclaringType;
string className = currentClass.Name;

通过上述步骤,我们可以获取到当前方法的名称(methodName)和当前类的名称(className)。

这种方法适用于无异常且不使用C#中反射的情况下获取当前方法和类的需求。在实际开发中,可以根据需要将这些信息用于日志记录、调试等场景。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数计算(云原生无服务器计算服务):https://cloud.tencent.com/product/scf
  • 腾讯云云数据库(数据库服务):https://cloud.tencent.com/product/cdb
  • 腾讯云云服务器(云服务器):https://cloud.tencent.com/product/cvm
  • 腾讯云人工智能(AI服务):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(物联网平台):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发(移动应用开发服务):https://cloud.tencent.com/product/mad
  • 腾讯云对象存储(云存储服务):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(区块链服务):https://cloud.tencent.com/product/baas
  • 腾讯云虚拟专用网络(网络服务):https://cloud.tencent.com/product/vpc
  • 腾讯云安全产品(安全服务):https://cloud.tencent.com/product/safety
  • 腾讯云音视频(音视频服务):https://cloud.tencent.com/product/tcav
  • 腾讯云多媒体处理(多媒体处理服务):https://cloud.tencent.com/product/mps
  • 腾讯云元宇宙(元宇宙服务):https://cloud.tencent.com/product/mu
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#反射与特性(一):反射基础

说明 1.1 关于反射、特性 C# 7.0 本质论》,关于这方面的知识 《第十八章 反射、特性动态编程》;C# 7.0 核心技术指南》,这部分内容《第19章 反射元数据》。 ?...元数据包含内容: 程序或每一个类型描述; 清单信息,包括与程序本身有关数据,以及它依赖库; 代码嵌入自定义特性,提供与特性所修饰构造有关额外信息。...反射:在运行时检查并使用元数据编译代码操作称为反射。 一个程序集包含内容: ? [图片来自 《C# 7.0 核心技术指南》] 2....程序集操作 C# 编译成代码会生成到 .dll 或 .exe 文件,我们可以通过 Assembly ,手动加载 程序集文件,实现各种操作。...Assembly System.Reflection 命名空间中。 《C# 7.0 核心技术指南》,列出 Assembly 常用属性方法: ?

1.2K50

C#反射解析及使用.

1、对C#反射机制理解 2、概念理解后,必须找到方法去完成,给出管理主要语法 3、最终给出实用例子,反射出来dll方法 参考: C#反射,MSDN编程指南 反射是一个程序集发现及运行过程,通过反射可以得到...使用反射可以看到一个程序集内部接口、方法、字段、属性、特性等等信息。System.Reflection命名空间内包含多个反射常用,下面表格列出了常用几个。...Assembly.LoadFrom()方法,Assembly.LoadFile()方法区别 C#,我们要使用反射,首先要搞清楚以下命名空间中几个关系:     System.Reflection...这个方法,他执行效率比LoadFrom要高很多,而且不会造成重复加载问题(原因在第2点上说明)     使用这个方法时候, CLR会应用一定策略来查找程序集,实际上CLR按如下顺序来定位程序集...这就是第1点提到Load方法比LoadFrom方法执行效率高原因。另外,由于可能把程序集作为"数据文件"来加载,所以使用 LoadFrom从不同路径加载相同程序集时候会导致重复加载。

2K140

【深入浅出C#】章节 9: C#高级主题:反射动态编程

C#其他一些现代编程语言中,反射是一项强大功能,提供了以下能力: 获取类型信息: 反射允许你在运行时获取对象类型信息,包括名称、命名空间、基、实现接口等。...然后,Main方法,我们使用typeof(MyClass)获取了MyClass类型信息,并使用反射方法获取了不同类型成员信息,包括字段、属性方法。...Tip:使用反射调用方法属性时,需要注意处理可能引发异常,并根据需要传递适当参数。...实际应用,应尽量遵循面向对象编程封装原则,只必要情况下使用反射来访问或修改对象私有成员。...实际应用,应尽量遵循面向对象编程封装原则,并仅在必要情况下使用反射来访问或调用对象私有方法

57532

.NET Core 获取程序运行环境信息与反射应用

笔者九篇反射系统文章已经完结,但是笔者会持续更新反射在日常撸码应用。 本篇内容主要是 .NET Core 获取运行环境信息、利用反射更加方便地处理数据。...笔者九篇反射系列文章阅读地址如下: C# 反射与特性(一):反射基础 C# 反射与特性(二):探究反射 C# 反射与特性(三):反射类型成员 C# 反射与特性(四):实例化类型 C# 反射与特性(....NET Core 是有 API 获取系统 CPU 情况 内存使用情况,倒是可以获取当前进程 CPU 内存使用情况。 可以查看 stackoverflow 了解。...public static class EnvironmentInfo { } } 获取属性值 反射获取属性值方法,用于获取上述几个属性值。...总结 我以上使用-属性 来作为获取功能,这样可以不必写很多方法去调用获取环境信息,属性就是数据。既方便序列化,又方便反射。 同时,如果先拓展信息项,直接添加上去就行,反射直接全部拿到手。

1.1K20

C#反射与特性(九):全网最全-解析反射

C#反射与特性(四):实例化类型》第三节,我们探究了泛型各种实例化方式。 泛型约束 对于方法来说,使用泛型版本,可能会进行泛型约束,我们需要将约束解析出来。...委托都可以使用。 属性 说明 IsNested 获取一个指示当前 Type 对象是否表示其定义嵌套在另一个类型定义之内类型值。...Attribute.GetCustomAttributes 方法; 《C#反射与特性(七):自定义特性以及应用》,对特性使用做了很详细介绍,这里不再赘述。...类型方法 ParameterInfo 构造函数或方法参数 EventInfo 类型事件 特性的话,C#反射与特性(七):自定义特性以及应用》已经讲解了,这里不再赘述。...2.1.1 访问修饰符 public、private两个修饰符,判断起来十分简单; C# 关键字 protected internal IL 没有任何意义,且不会用于反射 API

1.9K40

c#面试题抽象接口区别-金三银四面试:C#程序员经常遇到30道基础面试题,想你所想

11、C#中有没有静态构造函数,如果有是做什么用?   12、C#如何实现多态?   13、什么是反射?如何实现反射?   14、请解释流与文件有什么不同?   ...静态构造函数典型用途是:当使用日志文件时,将使用这种构造函数向日志文件写入项。   12、C#如何实现多态?   ...重写主要是继承中体现,就是定义方法并在派生使用新实现重写它们。   13、什么是反射?如何实现反射?   反射提供了访问程序集、模块类型信息一种机制。...您可以使用反射动态创建类型实例,将类型绑定到现有对象,或从现有对象获取类型。然后,可以调用类型方法或访问其字段属性。...通过反射命名空间中以及System.Type,您可以获取有关已加载程序集和在其中定义类型(如、接口值类型)信息。您也可以使用反射在运行时创建类型实例,然后调用访问这些实例。

1.9K20

尝试Java,从入门到Kotlin(上)

由于Checked Exception是类型系统一部分,一个不抛出异常函数一个会抛出异常函数,它们类型是不相同。这就导致了JavaLambda泛用性大大减少而且不是很好用。...泛型 Java泛型原理C#不同。C#是运行时泛型,程序运行时候仍然能获取泛型类型信息。而Java泛型是类型擦除(Type Erasure)式泛型。...然而在Java无法实现。因为parse方法需要在运行时实例化T一个对象,而Java在运行时这些泛型都已经被擦除,无法获取类型T信息,从而无法实例化。...要在Java实现类似的方法,需要额外将一个Class对象放到参数: T parse(String jsonStr, Class type) 这样Java才能使用这个type,在运行时使用反射方式生成类型...Getter/Setter 面向对象哲学,字段属于实现细节,应该设为private使它隐藏在内部。但是实际,有很多字段需要直接访问修改。

13730

Java安全基础(四)Java反射机制

那什么是反射呢? 下面是官方解释:反射使得Java代码能够发现有已加载字段、方法构造函数信息,并在安全限制内使用反射字段、方法构造函数对其底层对应对象进行操作。...同样,Java反射机制也是也是如此,在运行状态,通过Java反射机制,我们能够判断一个对象所属;了解任意一个所有属性方法;能够调用任意一个对象任意方法属性;这种动态获取信息以及动态调用对象方法功能称为...,会出现当前对象或所包含属性方法,这里用到就是Java反射机制。...() 5.1、获取对象-forName() 如果要使用Class方法完成,就需要使用forName方法,只要有名称即可,更为防爆,扩展性更强。...假如开发者看到了这段代码,他认为可以使用Java反射来重构此代码以减少代码行,如下所示: 这样重构看起来使得代码行减少,消除了if/else块,而且可以不修改命令分派器情况下添加新命令类型,

71120

.NET基础面试题整理

在此情况下,结构成本较低。 3). 表现抽象多级别的对象层次时,是最好选择 4)....作用:为了促进代码重用,尤其是算法重用 优势:(1)可重用性(2)类型安全,参数化只有成员明确希望数据类型才可以使用(3)性能:避免了从Object强制转换值类型装箱(4)减小了内存消耗...NET BCL中有哪些常见异常代码您是如何捕获/处理异常“catch (ex)”,“throw”“throw ex”有什么区别?您会如何设计异常结构,什么情况下您会抛出异常?...C# 3.0,Lambda表达式是什么?扩展方法是什么?LINQ是什么?您觉得C# 3.0还有哪些重要特性,它们带来了什么优势?BCL哪些这些特性有关?您平时最常用哪些?.../当前目录,~/应用程序根目录 023 数据库查询性能优化 1)select只返回需要列 2)减少使用同时,考虑减少行,使用where子句 3)只需要时候用order by 4)避免from

1.6K21

C#性能优化杂七杂八总结

高效做法是使用 Compare 方法,这个方法可以做大小写忽略比较,并且不会创建新字符串。...需要注意是:方法局部变量不是从堆而是从栈上分配,所以C#不会做清零工作。如果使用了未赋值局部变量,编译期间即会报警。不要因为有这个印象而对所有成员变量也做赋值动作,两者机理完全不同!...C#可以值类型引用类型之间自动转换,方法是装箱拆箱。...避免不必要抛出异常 抛出异常捕获异常属于消耗比较大操作,可能情况下,应通过完善程序逻辑避免抛出不必要不必要异常。与此相关一个倾向是利用异常来控制处理逻辑。...1.6、反射 反射是一项很基础技术,它将编译期间静态绑定转换为延迟到运行期间动态绑定。很多场景下(特别是框架设计),可以获得灵活易于扩展架构。

26530

java核心技术总结

方法名相同,返回值声明(实际上会返回对象),可以空参也可以含参; 不写构造器情况下,JVM会自动一个中注入一个空参构造器,如果写了构造器(不管有参还是参),则不会自动生成; 许多框架在对进行实例化时候会调用空参构造器...,经过层层包装,就像链式反应一样,一个导致(cause)另一个,这样最顶层抛出异常也能获取到底层异常信息(getCause方法); 异常意义是一个方法应该抛出定义相同抽象层次上异常,...文件对象(字节码对象)— 字节码对象方法获取 Field Method 等 — 通过这些对象 api 进行相关操作; 反射获取注解前提就是注解生命周期必须是 runtime,反射得到...,获得属性方法,从而对该类进行一些特殊操作 反射核心就是获取 class 文件对象:Class.forName(“全限定名”) —– java.io.PrintStream.class—–“...extends 通配符; 如果要从集合写入类型E数据,并且不需要读取,可以使用 ? super 通配符; 如果既要存又要取,那么就不要使用任何通配符; (2)原理:List<?

46910

分享一篇开发杂文

创建个form,拖个timer控件,timer2_Tick事件,调用接收数据方法。 1、定义接收, 2、定义发送 3、主界面拖一些按钮,文本框,什么。...高效做法是使用 Compare 方法,这个方法可以做大小写忽略比较,并且不会创建新字符串。 ...需要注意是:方法局部变量不是从堆而是从栈上分配,所以C#不会做清零工作。如果使用了未赋值局部变量,编译期间即会报警。不要因为有这个印象而对所有成员变量也做赋值动作,两者机理完全不同! ...C#可以值类型引用类型之间自动转换,方法是装箱拆箱。...1.5.3 避免不必要抛出异常 抛出异常捕获异常属于消耗比较大操作,可能情况下,应通过完善程序逻辑避免抛出不必要不必要异常。与此相关一个倾向是利用异常来控制处理逻辑。

87010

Java知识点——反射初识以及基本API

1.2 程序加载过程.class文件关系 Java文件运行过程当前程序需要哪一个参与代码执行,那么就需要加载这个.class字节码文件,该.class字节码文件程序加载阶段,存在于内存...而在反射中,对象基础上更加抽象了一个层次,把特点统一,总结了一个数据类型。...public Constructor[] getDeclaredConstructors(); 【暴力反射获取当前Class对象对应Java文件,所有【构造方法对象数组】,包括私有化构造方法...Object: Object是Java中所有,这里可以传入任意类型参数 … : 不定长参数,因为Constructor对象获取过程,约束参数个数都不确定, 这里使用不定长参数来传入数据...: 方法名,指定获取是哪一个方法 parameterTypes: Class用于约束当前使用参数数据类型 … 不定长参数,方法参数个数,顺序,有参参问题 例如: cls是Class对象

47610

C++反射调用.NET(三) 使用非泛型集合委托方法C++列表对象list C++传递集合数据给.NET创建泛型List实例反射静态方法反射调用索引器当委托遇到协变逆变C++CLI

.NET与C++之间传输集合数据 上一篇《C++反射调用.NET(二)》,我们尝试了反射调用一个返回DTO对象.NET方法,今天来看看如何在.NET与C++之间传输集合数据。...创建泛型List实例 我们使用List来做集合对象,C#,我们可以通过下面的方式得到List泛型类型,然后进一步创建泛型对象实例: Type t= typeof(List); 但是,对应C+...反射静态方法 在上一篇,我们一个.NET方法通过接口动态创建实体,用是下面的方式: IUserInfo userinfo= EntityBuilder.CreateEntity<IUserInfo...C++/CLI,用nullptr表示空引用,跟C#null作用一样。...与.NET直接调用反射性能比较 本篇方案,都是C++反射来调用.NET方法,如果都是.NET应用程序中直接调用或者反射.NET方法,性能差距有多少呢?

9K100

C#反射与特性(五):类型成员操作

【微信平台,此文仅授权《NCC 开源社区》订阅号发布】 前面三篇,介绍了反射基本内容信息对象,反射主要作用于构造函数、属性、字段、方法、事件等类型成员对象;第四篇介绍了类型实例化事件操作。...MemberInfo 是用于获取有关所有成员(构造函数、事件、字段、方法属性)信息抽象基。...方法 使用说明 GetAccessors() 返回一个数组,其元素反射了由当前实例反射属性公共 get set 访问器。...那么什么情况下使用到他呢? 我们写代码时,会使用到例如 Visual Studio 等 IDE,如果使用 nameof,里面的类型是强类型,可以查找引用、跳转、获取注释等。...这里不再赘述 3.1.3 获取重载方法 C# 反射与特性》系列第四篇,我们介绍了构造函数 ConstructorInfo 调用重载,MethodInfo 实际上也是差不多

1K40

C# 关于泛型

前言 C# 里面的泛型不仅可以使用泛型函数、泛型接口,也可以使用泛型、泛型委托等等。使用泛型时候,它们会自行检测你传入参数类型,因此它可以为我们省去大量时间,不用一个个编写方法重载。...使用值类型或引用类型参数,实例化泛型 C# 时,反射可在运行时对其进行查询,且其实际类型类型参数皆可被确定。...通过使用泛型接口,可以不修改代码情况下,轻松地添加新类型或修改现有类型属性方法。 四、泛型方法 泛型方法是通过类型参数声明方法。...如果定义一个具有与当前相同类型参数泛型方法,则编译器会生成警告 CS0693,因为方法范围内,向内 T 提供参数会隐藏向外 T 提供参数。...,因此上一行代码可简化为: Del m2 = Notify; 泛型定义委托,可以方法以相同方式来使用泛型类型参数。

33120

C# 基础知识系列- 5 反射泛型

前言 为什么要把反射泛型放在一起讲呢,这里是处于个人对C#一个很棒观感,因为C#反射是可以获取泛型里元素,而不像Java一个让我比较难受地方就是Java泛型实际编译时候会擦除类型信息。...声明时候,声明一个泛型占位符T ,在下面的属性、字段、方法参数方法返回值都可以使用这个占位符,约定类型一致。 泛型接口泛型是一致,只不过接口没有方法实现内容也就是方法体而已。...使用 做标记,中间写类型,表示这是一个泛型为XXX泛型。通常与其他语言不同地方是,C#泛型支持所有类型,意思就是没有额外声明时候,可以使用任意类型作为泛型参数传递。...泛型约束泛型标记 约束 实际开发过程,我们会对一些泛型泛型参数进行类型约束,那么泛型约束应该怎么写呢,看示例: public void Demo(T arg) where T : 约束内容...反射 反射在很多地方都有着使用,这里先简单介绍一下C#反射相关内容,因为细讲的话会涉及到很多东西而且还需要很多前置概念,不过自己写框架之前不需要涉及到太多反射内容。

1.5K60

C#反射实例

C#反射入门学习首先要明白C#反射提供了封装程序集、模块类型对象等等。那么这样可以使用反射动态创建类型实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段属性。...MSDN描述: 反射通常具有以下用途: 使用 Assembly 定义和加载程序集,加载程序集清单列出模块,以及从此程序集中查找类型并创建该类型实例。...使用 Module 发现以下信息:包含模块程序集以及模块等。您还可以获取模块上定义所有全局方法或其他特定非全局方法。...使用 ParameterInfo 发现以下信息:参数名称、数据类型、参数是输入参数还是输出参数,以及参数方法签名位置等。...C#反射学习时几点注意内容: 1.指定库文件必须使用绝对路径,不能使用相对路径(其实感觉有点不合理,不太方便) 2.19行,命名空间名字必须一起指定 3.例子1种必须实例化反射反射,因为要使用方法并不是静态方法

1.1K20

注解总结

注解概述 1.1 注解解释 注释: 解释代码,给程序员看 注解: Java语言中方法、变量、参数包等都可以被标注。Javadoc不同,Java标注可以通过反射获取标注内容。...1.3 Java预定义一些注解 @Override: 重写/实现方法情况下,检查方法声明是否或者接口中方法声明一致。强制格式检查。...@Deprecated 标注当前方法已过时,例如 Data日期一些方法 @SuppressWarnings("all") 压制警告,可以用于一些代码存在明确无异常情况下,压制一些警告...利用反射时,会涉及到getXXX方法 通过属性名获取对应值概念来完成 【但是实际上是利用abstract方法来完成属性概念】 属性使用格式[实际按照方法格式操作] 1....属性键名字 ==> 方法名字 2.3 元注解 给予注解解释,用于约束注解一些操作问题 @Retention - 标识这个注解怎么保存,是只代码,还是编入class文件,或者是在运行时可以通过反射访问

46110
领券