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 中,您拥有 NGEN(本机生成器),它允许您将 IL 代码编译为适用于运行您的应用程序的特定机器的机器代码。(您不能使用此工具将您的 IL 代码编译为适用于所有计算机的机器代码,此工具依赖于 CPU、OS 和...]。您的应用程序的性能将因为此工具而大大提高。

WPF(.NET)版本代码中使用的属性[TargetedPatchingOptOut]是针对NGEN工具的,这里这个属性是在构造函数之上使用的,所以接口不适合这里。

在 Silverlight 中,您没有 NGEN,没有名为 [TargetedPachingOptOut] 的属性

祝你好运

于 2013-09-18T12:16:52.690 回答