当前位置:  开发笔记 > 编程语言 > 正文

获取对调用方法的对象的引用?

如何解决《获取对调用方法的对象的引用?》经验,为你挑选了1个好方法。

我有一个dll包括:

public abstract class Module
{
   internal int ID;

   public abstract void ModuleStart();

}

public void function1() {}
public void function2() {}
//etc...

然后我有另一个dll引用上面的dll并具有:

class MyModule : Module
{
   public override void ModuleStart()
   {
      function1();

   }

}

我希望能够做的是让function1知道调用模块ID的值,而不是传入它.有没有办法做到这一点?基本上我要做的是,主要的模块DLL被加载,一个方法运行在第二个DLL中加载,使用反射来确保它有一个Module的子,为它分配一个ID并运行ModuleStart.然后,MyModule可以执行它所需的操作,从第一个dll调用函数以访问内部受保护的内存,但是当调用这些函数时,它们需要知道调用它们的模块的ID.这可能吗?MyModule不了解其ID,也无法更改它.



1> p.s.w.g..:

.NET 4.5添加了一些功能来执行与此类似的操作CallerMemberNameAttribute.以下是文档中的示例:

public void TraceMessage(string message,
        [CallerMemberName] string memberName = "",
        [CallerFilePath] string sourceFilePath = "",
        [CallerLineNumber] int sourceLineNumber = 0)
{
    Trace.WriteLine("message: " + message);
    Trace.WriteLine("member name: " + memberName);
    Trace.WriteLine("source file path: " + sourceFilePath);
    Trace.WriteLine("source line number: " + sourceLineNumber);
}

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有