相关疑难解决方法(0)

如何获取调用方法的参数值?

我正在编写一些代码,需要能够从调用类的方法中获取参数的.我知道如何一直到ParameterInfo []数组,但我不知道如何获取值.这甚至可能吗?

如果是,我认为它与使用MethodInfo对象的MethodBody属性有关,它允许你检查IL流,包括属性,但我不知道怎么做,我还没找到适用于Google的代码.

// Finds calling method from class that called into this one
public class SomeClass
{
    public static void FindMethod()
    {
        for (int i = 1; i < frameCount; i++)
        {
            var frame = new StackFrame(i);
            var methodInfo = frame.GetMethod();
            if (methodInfo.DeclaringType != this.GetType())
            {
                string methodName = frame.GetMethod().Name;
                var paramInfos = methodInfo.GetParameters();

                // Now what?? How do I get the values from the paramInfos

                break;
            }
            else if (i == frameCount - 1) …
Run Code Online (Sandbox Code Playgroud)

c# reflection dynamic

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

如何用Reflection + C#获取所有引用

使用System.Reflection,我可以从特定的类中获取所有方法

我需要知道这些方法的参考是什么.例如:在Visual Studio中,如果需要特定对象的引用

  • 右键单击对象并选择"查找所有引用"
  • Visual Studio显示此选定对象的引用

我想做同样的事情,但是从反射或其他方式的代码.

我可以这样做吗?

c# reflection

10
推荐指数
1
解决办法
2656
查看次数

C#属性检测未使用的方法

是否可以编写一个可以跟踪方法的属性来检测这些方法是否从未被调用过?

[Track]
void MyMethod(){

}
Run Code Online (Sandbox Code Playgroud)

输出:

warning: method "MyMethod" in "MyClass" has no references in code.
Run Code Online (Sandbox Code Playgroud)

在编译时运行它并不是绝对必要的,但它应该在应用程序初始化时起作用(无论如何在编译时更好).

这个标签将用于跟踪音频库上的方法,因为音频经常被重构,我们通常在代码中搜索带有0个引用的音频方法,我们想要标记这些方法,这样我们就可以快速检测并删除未使用的音频资产.

基本上每次我们添加新的声音效果时,我们以后可能不再触发它(调用它的方法),并且音频文件/播放代码可以在应用程序中保留很长时间.

c# reflection custom-attributes

7
推荐指数
1
解决办法
720
查看次数

如何从C#类方法中找到调用哪些方法 - 而不是在运行时

我有一个C#类,代码太多了,我想要refactor它.我想做的是从所有的开始public methods,并tree为每一个构建一个,显示从中调用类中的其他方法,然后从子类中调用哪些方法,依此类推.

这将使我能够看到哪些private methods只属于一个public method,哪些是共享的等等.

请注意,我不想在运行时执行此操作,我希望能够直接查看类.cs file,或者使用编译的反射来查看类DLL.

我知道我可以在编译的DLL上使用反射来获取方法,但我找不到任何方法来找出类中其他方法调用的方法.

任何想法?同样,这不是运行时问题,它纯粹是为了构建一个可重用的实用程序来帮助重构超大类.在我正在研究的解决方案中有很多,所以代码可以反复使用.

.net c# reflection dll refactoring

5
推荐指数
1
解决办法
1373
查看次数

如何获取调用方法名称?

有没有办法获得C#方法的所有调用者,即:

public string Caller(string str)
{      
  Customer cust = new Customer();
  cust.Firstname = "Peter";
  cust.LastName = "Beamer";
  string t = getName(cust);
  return t;
}

private string getName(Customer customer)
{
  return customer.Firstname +" "+ customer.LastName;
}
Run Code Online (Sandbox Code Playgroud)

会回来的:来电者.

我现在可以得到的是使用EnvDTE.CodeFunction的方法正文.也许有一种更好的方法来实现它,而不是试图解析这段代码.

注意:我不想获取当前方法的调用方法名称.我希望如果我给出方法的名称然后它将返回传递方法的调用方法名称.

.net c# visual-studio-2010 envdte

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

获取DLL的函数列表

我正在建立一个项目.这是一个用户可以添加其扩展(DLL文件)的应用程序.要管理扩展,我需要获取它的类,函数等列表.是否有代码可以执行此操作?

注意:我使用的是C#.

.net c#

1
推荐指数
1
解决办法
7119
查看次数