ForwardRef的使用變爲幾乎是這樣的:
consumer.cs
using System;
using System.Runtime.CompilerServices;
class Foo
{
[MethodImplAttribute(MethodImplOptions.ForwardRef)]
static extern void Frob();
static void Main()
{
Frob();
}
}
provider.cs
using System;
using System.Runtime.CompilerServices;
class Foo
{
// Need to declare extern constructor because C# would inject one and break things.
[MethodImplAttribute(MethodImplOptions.ForwardRef)]
public extern Foo();
[MethodImplAttribute(MethodImplOptions.ForwardRef)]
static extern void Main();
static void Frob()
{
Console.WriteLine("Hello!");
}
}
現在的魔力醬。打開Visual Studio命令提示符下輸入:
csc /target:module provider.cs
csc /target:module consumer.cs
link provider.netmodule consumer.netmodule /entry:Foo.Main /subsystem:console /ltcg
這裏使用的,我們正在管理模塊連接在一起的連接鮮爲人知的功能之一。鏈接器能夠將相同形狀的類型凝膠化(它們需要具有完全相同的方法等)。 ForwardRef實際上可以讓您在其他地方提供實施。
這個例子是沒有意義的,但是如果單一的方法用不同的語言(例如IL)實現,你可以想象事情會變得更有趣。
看起來很酷。感謝你的例子。 –