相关疑难解决方法(0)

"新建"接口

几天前,我看到CoClassAttribute以我以前没有想到的方式使用.


[ComImport, CoClass(typeof(Foo)), Guid("787C1303-AE31-47a2-8E89-07C7257B1C43")]
interface IFoo {
    void Bar();
}

class Foo : IFoo {
    public void Bar() {
        Console.WriteLine("Oh retado!");
    }
}

Run Code Online (Sandbox Code Playgroud)

用作:


class CoClassDemo {
    public static void Show() {
        var a = new IFoo();
        a.Bar();
    }
}
Run Code Online (Sandbox Code Playgroud)

这应该不会让我感到惊讶,因为自.NET Framework早期以来,COM Interop正是这样做的.在.NET Reflector中挖掘COM Interop代码时,我根本没有那么多关注.


method public hidebysig static void Show() cil managed
{
    .maxstack 1
    .locals init (
        [0] class ConsoleApplication1.IFoo a)
    L_0000: nop 
    L_0001: newobj instance void ConsoleApplication1.Foo::.ctor()
    L_0006: stloc.0 
    L_0007: ldloc.0 
    L_0008: callvirt instance void ConsoleApplication1.IFoo::Bar()
    L_000d: …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection mocking

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

标签 统计

c# ×1

dependency-injection ×1

mocking ×1