【问题标题】:Is there a functionality in .NET through which a method can determine which class has call it.NET 中是否有一种功能,通过该功能,方法可以确定哪个类调用了它
【发布时间】:2011-07-06 03:27:14
【问题描述】:

我有一个类,其中有一个方法,并且我有一些调用此方法的 aspx 页面。现在我想知道在这个方法中哪个页面调用了它。
或者
.NET 中是否有一个功能可以让方法确定哪个类调用了它

【问题讨论】:

    标签: c# .net asp.net oop frameworks


    【解决方案1】:

    呸。

    不管怎样,

     new StackTrace().GetFrame(1).GetMethod().DeclaringType
    

    这会给你类型。

    有什么理由真的需要这样做吗?似乎是一种意大利面条解决方案。

    【讨论】:

    • 你说得对,我有某种辅助方法,我想知道哪个页面调用了该方法。
    【解决方案2】:

    试试这个代码:

            System.Diagnostics.StackFrame f = new System.Diagnostics.StackFrame();
            Type t = f.GetMethod().DeclaringType;
            string name = t.FullName;
            string classname = name.Substring((name.IndexOf('.')+1));
    

    来源是this link

    【讨论】:

      【解决方案3】:

      为什么不使用接口?
      这样你也可以限制可以使用该方法的Pages。

      interface INamedPage {
          string Name { get; set; }
      }
      

      这是您的页面:

      public PageOne: Page, INamedPage {
          ...
          public string Name {
              get { return "Page One"; }
          } 
          ...
      }
      

      被调用的方法:

      public void WhoIsIt (INamedPage page) {
         return "Oh it was " + page.Name + " again!";
      }
      

      上面是一个简单的例子。我不会全部使用字符串。您的解决方案必须取决于您想对调用它的页面做什么。

      【讨论】:

        【解决方案4】:

        给你。这应该会告诉您请求当前页面的页面的完整 url。

        Request.Urlreferrer
        

        【讨论】:

        • 他似乎有某种辅助方法,他想知道哪个页面调用了该方法。要么那个,要么他完全解释错了O_o
        • 是的。我正在尽力破译这个问题。特别是考虑到类实际上并不调用方法。对象上的方法可以。
        猜你喜欢
        • 2021-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多