English 中文(简体)
动态方法
原标题:Dynamic Method Invocation without Reflection

是否有任何人知道我如何能够在没有思考的情况下积极援引方法?

I'll试图具体说明我的问题如下:

我们有接口代码My Implementation,是实施IMyInterface的。 除此以外,我还有一个通用的代理类别:MyProxy<T>T :IMyInterface。 在这一代言中,大麻包涵了在<代码>My Implementation和该类所有继承人中界定的所有方法。 实现的大麻是动态的诱发方法。 在进行思考时,一切都是透明的,但我的理解是,这样做可能非常缓慢。 是否有任何人知道可以更快地解决问题?

感谢很多!

——————

hmm,与我先前的描述一样,我试图再次描述我的问题。 实例:

因此,让我们想象,我们有以下法典:

public interface IMyInterface
{
     void Method();
}

public class MyImplementation : IMyInterface
{
     public void Method()
     {
          Console.WriteLine("Yeaah!");
     }
}

我所要提到的重要一点是,我们有一个称为霍尔德尔的班子。 这一类应采用以下方式:

var holder = // the way of instantiation doesn`t really matters
holder.Register(myImplementationInstance);

var myInterfaceInstance = holder.Resolve<IMyInterface>();
myInterfaceInstance.Method();

证人将交还一些包裹,执行<条码>IMyInterface,并将总结我已登记的执行情况。

正如我前面说过的那样,我们有一套完整的<代码>。 采用<代码>IMyInterface并采用名称法的My ImplementationWrapper 与以下机构的方法

public void Method()
{
    _wrappedInstance.Method();
}

So, there are two questions a) How can I automatically create the wrapper for myImplementationInstance (I dont want to know anything about object that will be registred inHolder) b) How can I dynamically invoke the methods ofmyImplementationInstance` by its wrapper

最佳回答

首先。 你们是否保证反思不会太慢,满足你们的需要? 不要听途说——测试它。

Edit: 包括使用动态

第二,如果你在www.net3.5或 .net 4.0中,那么你就可以使用甲醇(或者就4.0而言――任何DLR语言或动力)来从事动态的援引。

《德国国籍法》是解决这类问题的最佳办法。 在C#中,你可以使用动态关键词来查阅 d。

问题回答

我不敢肯定你为取得什么成就。 但是,你想要的是decorator,这并不需要思考。

这似乎好像你重新尝试实施多吗?

class MyBaseImplementation
{
    public virtual void MyMethod()
    {
        Console.WriteLine("Base");
    }
}

class MyDerivedImplementation : MyBaseImplementation
{
    public override void MyMethod()
    {
        Console.WriteLine("Derived");
    }
}

static void DoSomething(MyBaseImplementation instance)
{
    instance.MyMethod();
}

static void Main(string[] args)
{
    MyBaseImplementation inst = new MyDerivedImplementation();
    DoSomething(inst);
}

这将印刷“衍生”的文字,尽管功能中的参数是“基本的执行情况”类型。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签