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

使用c#获取调用我们所在函数的对象

使用C#获取调用我们所在函数的对象可以通过使用System.Reflection命名空间中的MethodBase.GetCurrentMethod()方法来实现。该方法返回一个MethodBase对象,可以通过该对象获取调用当前方法的对象。

下面是一个示例代码:

代码语言:txt
复制
using System;
using System.Reflection;

public class MyClass
{
    public void MyMethod()
    {
        MethodBase method = MethodBase.GetCurrentMethod();
        Console.WriteLine("调用当前方法的对象是:" + method.ReflectedType.Name);
    }
}

public class Program
{
    public static void Main()
    {
        MyClass obj = new MyClass();
        obj.MyMethod();
    }
}

输出结果为:

代码语言:txt
复制
调用当前方法的对象是:MyClass

在上述示例中,MethodBase.GetCurrentMethod()方法返回了一个MethodBase对象,通过ReflectedType属性可以获取调用当前方法的对象的类型。在这个例子中,调用MyMethod()方法的对象是MyClass

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

c#获取当前运行程序所在目录

C#获取项目程序及运行路径方 1.asp.net webform用“Request.PhysicalApplicationPath获取站点所在虚拟目录物理路径,最后包含“\”; 2.c# winform...用 A:“Application.StartupPath”:获取当前应用程序所在目录路径,最后不包含“\”; B:“Application.ExecutablePath ”:获取当前应用程序文件路径...().BaseDirectory”:获取当前应用程序所在目录路径,最后包含“\”; E:“Environment.CurrentDirectory”:获取当前应用程序路径,最后不包含“\”; F:“...,获取这个文件路径所在目录即得到安装程序目录; 一、获取当前文件路径 1....().BaseDirectory”:获取当前应用程序所在目录路径,最后包含“\”; E:“ Environment.CurrentDirectory”:获取当前应用程序路径,最后不包含“\”; F:

3.8K10

dotnet C# 只创建对象调用构造函数方法

有时我期望只是创建出对象,但是不要调用对象构造方法,可以通过使用 FormatterServices GetUninitializedObject 函数来实现只创建对象调用构造函数方法 这个 FormatterServices.GetUninitializedObject...方法大部分是用在做序列化使用,然而在很多 IOC 容器,也都使用此方法来创建对象,而通过其他方法拿到构造函数 在 WPF XAML 创建对象,也有用到此方法,详细请看 dotnet 读 WPF...因为如果在构造函数抛出异常,那么在 C# 代码层面将拿不到此对象,也就无法调用对应 Dispose 释放 如以下代码,可以看到 Foo 对象依然是空 private void F1()...Foo 对象 Dispose 方法,将会因为拿不到对象而无法调用 解决此方法做法就是通过只创建对象而不调用构造方法,先拿到对象然后再调用构造,如果构造出错,依然还可以调用对象 Dispose...如果没有使用如上方法,那么在释放函数异常将会在 GC 回收线程抛出,而让应用程序退出 这就是为什么有很多容器和底层库喜欢使用此方法创建对象原因 本文代码还请到 github 或 gitee 上阅读代码

79230

【JavaScript】对象 ② ( 对象使用 | 调用对象属性 | 调用对象方法 | 变量与属性区别 | 函数与方法区别 )

, 值 对应 属性值 ; 逗号隔开 : 多个 表示 属性 和 方法 键值对 之间 使用逗号隔开 ; 对象方法 : 表示 方法名称 键 后面的 冒号 后面 写一个 " 匿名函数 " , 如 :...: 使用 对象名.属性名 方式 , 调用 对象属性 ; // 访问对象属性 - 方式一 : 对象名.属性名 console.log(person.name); 使用...) 方式 , 调用对象方法 ; // 调用对象方法 - 对象名.方法名() person.hello(); 完整代码示例 : <!...并赋值 , 可以使用 变量名 单独使用 ; 属性 在 对象中 , 不需要声明 , 但是在使用时 , 必须 用 对象名.属性名 或者 对象名[属性名] 方式使用 ; 三、函数与方法区别 函数与方法相同点...: 都可以 实现 某种功能 , 做某件事 ; 函数与方法不同点 : 函数 可以 单独声明存在 , 可以使用 函数名() 单独使用 ; 方法 在 对象中 , 不需要声明 , 但是在使用时 , 必须 用

9910

JavaScript this 小结纯粹函数调用作为对象方法调用作为构造函数调用apply 调用

JavaScript 语言一个关键字。 它是函数运行时,在函数体内部自动生成一个对象,只能在函数体内部使用。 ? 上面代码中,函数test运行时,内部会自动有一个this对象可以使用。...那么,this值是什么呢? 函数不同使用场合,this有不同值。 总的来说,this就是函数运行时所在环境对象。...下面分情况,详细讨论 纯粹函数调用 函数最通常用法,属全局性调用,this即代表全局对象。 ?...运行结果是1 作为对象方法调用 函数还可以作为某个对象方法调用,这时this就指这个上级对象 ? 结果:1 作为构造函数调用 通过这个函数,可以生成一个新对象。this就指这个新对象。 ?...运行结果为1 为了表明这时this不是全局对象我们对代码做一些改变: ? 运行结果为2,表明全局变量x值根本没变。 apply 调用 apply()是函数一个方法,作用是改变函数调用对象

2.6K20

dotnet C# 调用委托 GetInvocationList 对象分配

方法,那么将视委托大小,每次创建不同大小新数组对象,而在频繁调用模块,将会创建大量对象 如以下代码一个委托,当然对于事件来说也是如此 Action action =...action GetInvocationList 方法,那么在每次调用都会申请一些内存,如使用以下代码进行测试 for (int i = 0; i < 100; i++)...详细请看 dotnet 使用 GC.GetAllocatedBytesForCurrentThread 获取当前线程分配过内存大小 可以看到运行时控制台输出如下 312 112 112 112 112...如果在调用频繁模块里面,不断调用 GetInvocationList 方法,将会有一定性能损耗。...#4736 · dotnet/wpf 本文所有代码放在 github 和 gitee 欢迎访问 可以通过如下方式获取本文源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码

60730

获取对象具体类型功能函数

HTML5学堂:JavaScript当中,时常会使用到typeof来进行数据类型检测,但是我们觉得typeof不能够满足我们需求,对于数组、函数、时间对象等,使用typeof返回都是“object...4 获取传入对象[[Class]]属性值 5 计算出"[object 传入对象[[Class]]属性值]" 6 返回这个计算结果 [[Class]]是个神马玩意 [[Class]]是一个内部属性,所有的对象都拥有这个属性...[[NativeBrand]]返回内容和[[Class]]并不相同。那么我们是不是不能使用toString了呢?...) —— 这个操作是内部进行 之后,再内部调用,找到当前对象[[Class]]值 返回[object 具体类型]; 使用call主要原因?...——当然是改变this指向了,Object.prototype.toString()当中toString方法是Object,不是当前要调用对象我们希望针对相应对象调用toString方法,自然要改变

1.3K70

oracle函数调用使用execute命令_matlab函数调用

大家好,又见面了,我是你们朋友全栈君。 之前一直使用MySQL数据库,第一次接触Oracle就用到了函数和存储过程,今天跟大家分享一下使用过程....调用Oracle函数,返回游标. controller层没什么内容,我们直接从实现类说起:new 一个map,将函数入参,put进这个map中, 然后将这个map传进去mapper ,最后从这个map...中根据游标名,取出数据,强转成list 就可以了 图片 在mapper层 大概就是这样了.存储过程调用也是类似的 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

2.1K10

dotnet C# 多次对一个对象调用构造函数会发生什么

今天来玩一点变态使用反射获取到某个类型构造函数,接着多次对此类型某个对象调用构造函数方法。...RuntimeHelpers GetUninitializedObject 方法创建对象而不调用构造函数 var foo = (Foo) RuntimeHelpers.GetUninitializedObject...详细请看 dotnet C# 只创建对象调用构造函数方法 此时虽然 Foo 对象 foo 创建了,但是此对象还没有经过构造函数。...因此在调用构造函数时候,只会改变 F2 属性值,而不会更改 F1 属性任何值。...也因为构造函数只是一个函数,因此调用多次就和调用一个方法多次是一样 本文所有代码放在github 和 gitee 欢迎访问 可以通过如下方式获取本文源代码,先创建一个空文件夹,接着使用命令行 cd

75510

C++创建动态库C#调用(二)----回调函数使用

前言 上一篇《C++创建动态库C#调用我们练习了C++写动态库用C#调用方法,后来研究回调函数这块,就想练习一下回调函数使用,学习并巩固一下,话不多说,我们直接开始。...代码演示 我们还是用上一章那个CppdllDemo ---- C++动态库修改 首先还是打开Cppdll.h头文件,我们在头文件中定义一个回调函数 typedef int(*cb)(int, int...这样C++动态库我们就已经完成了 ---- C#调用程序修改 先写C++动态库调用函数声明 [DllImport("Cppdll", EntryPoint = "call_func",...最后在原来按钮事件最后接着写调用C++动态库这个实现方法 textBox1.AppendText("调用C++动态库call_func回调函数\r\n"); num = CallFun(Call,...到这里C#调用程序修改也已经完成了 ---- 运行一下程序看看效果 ? -END-

3.1K30

【Unity3D】Unity 中使用 C# 调用 Java ② ( C# 调用 Java 相关方法介绍 | 调用 Java 方法 | 获取 Java 字段 | 设置 Java 字段 )

文章目录 一、 C# 调用 Java 相关方法介绍 1、 AndroidJavaClass 原型 2、 调用 Java 方法 调用普通方法 调用静态方法 3、 获取 Java 字段 获取普通字段...并且编译得到了字节码文件 , 该字节码文件已拷贝到 Unity 编辑器中 ; 一、 C# 调用 Java 相关方法介绍 ---- 在 Unity C# 脚本 中 , 通过 AndroidJavaClass..., 用于调用 Java 类 ; AndroidJavaObject , 用于调用 Java 对象 ; 两个类调用 Android 中 Java 类和对象 ; 1、 AndroidJavaClass...类 , 也可以调用该方法 ; 在 Get 方法后使用泛型标注字段类型 , 使用字段类型变量接收获取字段值 ; AndroidJavaObject#Get 方法 原型如下 : public FieldType...AndroidJavaClass 继承了 AndroidJavaObject 类 , 也可以调用该方法 ; 在 GetStatic 方法后使用泛型标注字段类型 , 使用字段类型变量接收获取字段值 ;

1.8K10

使用反射获取对象属性

要么庸俗,要么孤独——叔本华 前两天遇到一个坑,当时我通过使用getDeclaredFields()函数获取对象属性时发现一个问题: 获取属性顺序不对,结果我自己一看介绍 原来,它是无序 所以我们为了解决这个问题...,这里使用java8stream流 package com.ruben; import com.ruben.annotation.BeanFieldSort; import com.ruben.pojo.UserInfo...public static void main(String[] args) throws IllegalAccessException, InstantiationException { //获取对象...Class userInfoClass = UserInfo.class; //创建对象 UserInfo userInfo = userInfoClass.newInstance...Comparator.comparingInt(f -> f.getAnnotation(BeanFieldSort.class).order())).collect(Collectors.toList()); 在sorted()函数中传入排序规则

3.4K10

Js 使用new关键字调用函数和直接调用函数区别

,并以相应属性和方法初始化该对象,然后又返回了这个对象,除了使用new操作符且把使用包装函数叫做构造函数之外,这个模式跟工厂模式是一模一样。...注意:构造函数在不返回值情况下,默认返回新对象实例。 看到这里,我就将上面的例子new关键字去掉,发现和原来结果一样。...person.sayName(); 得出结论:使用new关键字是将函数当作构造函数调用,即为构造对象,若没有人为重写调用构造函数时返回值,那么返回对象是由解析器自己生成。...不使用new关键字调用函数,即为普通函数调用。 随即想到若是函数返回值是function型呢?...),虽然new函数与直接调用函数产生结果等同,但是是两个不同过程,一个是构造对象、一个是函数调用

3.6K10
领券