儿子 namespace NS{
    CLASS CS{  public FS()
{
     //谁用了自己呢?
     A or B ? 来次饿快客深 
}老子  A 
namespace NA{
    CLASS CA{  public FA()
{
     NS.CS.FS();//我用了
}
老子  B 
namespace NB{
    CLASS CB{  public FB()
{
     NS.CS.FS();//我也用了}大体就是一个方法能否知道谁使用的自己,能否具体到命名空间-类-方法-行数。 

解决方案 »

  1.   

    最简单的方法就是,FS加个参数
    调用的时候把自己的信息传过去(A OR B)
      

  2.   

    貌似通过反射能知道谁掉用 了自己,但比较麻烦using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Reflection;
    using StackTrace = System.Diagnostics.StackTrace; CLASS CS{public FS()
    {   MethodInfo mi=null;
       mi = (MethodInfo) (new StackTrace().GetFrame(1).GetMethod());
       //通过mi里某些属性可以找到谁调用了FS,你可以监控一下
    }
      

  3.   

    从调用栈的信息可以知道谁调用了自己的方法。Type type = new StackTrace().GetFrame(1).GetMethod().ReflectedType;
    Console.WriteLine("本方法的前一个方法的所在类的类型:"+type);
      

  4.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Reflection;
    using StackTrace = System.Diagnostics.StackTrace; CLASS CS{public FS()
    {   MethodInfo mi=null;
       mi = (MethodInfo) (new StackTrace().GetFrame(1).GetMethod());
          MessageBox.Show(mi.DeclaringType.FullName);//通过mi里DeclaringType.FullName属性可以找到谁调用了FS
    }
      

  5.   

    直接用
    StackFrame frame = new StackFrame(-1);
    就可以了。
      

  6.   

    namespace NS
    {
        class CS
        {
            public static string FS()
            {
             //谁用了自己呢?
             //A or B ? 来次饿快客深 
                StackTrace st = new StackTrace();
                StackFrame sf = st.GetFrames()[1];
                return sf.GetMethod().Name;
            }
        }
    }
     namespace NA
     {
        class CA
        {        public string FA()
            {
                return NS.CS.FS();//我用了
            }
        }
     }
     namespace NB
     {
        class CB
        {        public string FB()
            {
                return NS.CS.FS();//我也用了
            }
        }
    }private void button1_Click(object sender, EventArgs e)
    {
        NA.CA a = new NA.CA();
        MessageBox.Show(a.FA());    NB.CB b = new NB.CB();
        MessageBox.Show(b.FB());
    }