相关疑难解决方法(0)

如何找到调用当前方法的方法?

登录C#时,如何学习调用当前方法的方法的名称?我知道所有这些System.Reflection.MethodBase.GetCurrentMethod(),但我想在堆栈跟踪中向下迈出一步.我考虑过解析堆栈跟踪,但我希望找到一种更清晰,更明确的方法,比如Assembly.GetCallingAssembly()方法.

.net c# logging system.diagnostics stack-trace

465
推荐指数
11
解决办法
21万
查看次数

如何从代码中获取当前方法的名称

我知道你能做到

this.GetType().FullName
Run Code Online (Sandbox Code Playgroud)

要得到

My.Current.Class
Run Code Online (Sandbox Code Playgroud)

但是我能得到什么呢

My.Current.Class.CurrentMethod
Run Code Online (Sandbox Code Playgroud)

c# introspection

356
推荐指数
7
解决办法
31万
查看次数

获取当前方法的名称

这是一个愚蠢的问题,但是有可能从该方法中获取当前正在执行的方法的名称吗?

Public Sub SomeMethod()

   Dim methodName as String = System.Reflection.[function to get the current method name here?]

End Sub
Run Code Online (Sandbox Code Playgroud)

谢谢

.net vb.net reflection

62
推荐指数
4
解决办法
5万
查看次数


使用System.Reflection获取方法的全名

我有一个类似于以下的类:

public class MyClass
{

...

    protected void MyMethod()
    {
    ...
    string myName = System.Reflection.MethodBase.GetCurrentMethod.Name;
    ...
    }

...

}
Run Code Online (Sandbox Code Playgroud)

myName是"MyMethod".

有没有办法让我可以使用Reflection来myName取代"MyClass.MyMethod"的值?

.net c# reflection

39
推荐指数
6
解决办法
5万
查看次数

如何以编程方式访问NUnit测试名称?

是否有某些全局状态我可以访问当前运行的测试名称?

我有测试将文件输出到一个目录并读回来.我希望每个测试创建一个目录,然后清理它自己,我不想推它(我是必须使它独特,然后确保每个测试保持其独特性; ew).我可以使用GUID,但我希望帮助方法能够假设"这是应该存储测试文件的地方",而不必将GUID推送到它们.再次,这个地方的全球状态.

基本上,我想要一个电话TestRunner.Current.CurrentTest.Name.这样的事情存在吗?

nunit naming

38
推荐指数
2
解决办法
2万
查看次数

使用nameof获取当前方法的名称

浏览,搜索和希望但找不到直接答案.

无论如何在C#6.0中使用nameofwithouth指定方法名称来获取当前方法名称?

我将测试结果添加到这样的字典中:

Results.Add(nameof(Process_AddingTwoConsents_ThreeExpectedRowsAreWrittenToStream), result);
Run Code Online (Sandbox Code Playgroud)

我希望如果我不必明确指定方法名称,那么我可以复制+粘贴该行,这是一个非工作的例子:

Results.Add(nameof(this.GetExecutingMethod()), result);
Run Code Online (Sandbox Code Playgroud)

如果可能的话我不想使用Reflection.

UPDATE

这不是(如建议的)这个问题的副本.我问是否明确可以使用nameofwithout(!)反射来获取当前方法名称.

c# reflection c#-6.0 nameof

34
推荐指数
2
解决办法
1万
查看次数

我可以检查C#编译器内联方法调用吗?

我正在写一个XNA游戏,我在那里进行逐像素碰撞检查.通过移位int和按位ORing来检查这种情况的循环通常难以阅读和理解.

我想添加私有方法,例如private bool IsTransparent(int pixelColorValue)使循环更具可读性,但我不希望方法调用的开销,因为这是性能敏感的代码.

有没有办法强制编译器内联这个调用,或者我是否只是希望编译器会进行这种优化?

如果没有办法强制执行此操作,是否有办法检查方法是否内联,而不是读取反汇编?如果内联并且没有其他调用者存在,该方法是否会显示在反射中?

编辑:我不能强迫它,所以我可以检测到它吗?

c# optimization compilation inline

25
推荐指数
3
解决办法
7900
查看次数

有没有办法在c#中获取对调用对象的引用?

我想知道的是,是否可以(例如)走向堆栈帧,检查每个调用对象以查看是否匹配接口,如果是,则从中提取一些数据.

是的,我知道这是不好的做法,我想知道是否有可能.

c# reflection

22
推荐指数
3
解决办法
2万
查看次数

对于具有外部set/get方法的强类型类成员,是否有C#模式?

我有以下结构,并希望解决方案同时受益于以下两个类.第一个类使用字符串和强类型成员:

public class UserSessionData
{
    private string Get(string key)
    {
        throw new NotImplementedException("TODO: Get from external source");
    }
    private void Set(string key, string value)
    {
        throw new NotImplementedException("TODO: Set in external source");
    }

    public string CustomerNumber {
        get { return Get("CustomerNumber"); }
        set { Set("CustomerNumber", value); }
    }
    public string FirstName {
        get { return Get("FirstName"); }
        set { Set("FirstName", value); }
    }
    public string LastName {
        get { return Get("LastName"); }
        set { Set("LastName", value); }
    }

    // ... …
Run Code Online (Sandbox Code Playgroud)

.net c# c#-4.0

20
推荐指数
2
解决办法
1318
查看次数