4

MarkupExtension クラスの逆コンパイルは次のようになります。

[TypeForwardedFrom("WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")]
public abstract class MarkupExtension
{
    [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
    protected MarkupExtension()
    {
    }

    public abstract object ProvideValue(IServiceProvider serviceProvider);
}

ご覧のとおり、インターフェイスとして実装することもできましたが、代わりにクラスです。WPF チームがこのように設計したのはなぜですか? また、Silverlight ではインターフェイスです。

4

1 に答える 1

0

.NET では、アプリケーションを実行している特定のマシンに適したマシン コードに IL コードをコンパイルできる NGEN (ネイティブ ジェネレーター) があります。(このツールを使用して、すべてのコンピューターの IL コードをマシン コードにコンパイルすることはできません。このツールは、CPU、OS、および ... に依存しています。このツールにより、アプリケーションのパフォーマンスが大幅に向上します。

WPF(.NET)版のコードで使われている[TargetedPatchingOptOut]属性はNGENツール用であり、この属性はコンストラクターの上で使うためのものなので、ここではインターフェースが適していません。

Silverlight には NGEN がなく、[TargetedPatchingOptOut] という名前の属性もありません

幸運を

于 2013-09-18T12:16:52.690 に答える