微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 为什么MarkupExtension在wpf中是类

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);
}@H_502_10@ 
 

正如您所看到的,它可以作为一个接口实现,但它是一个类.为什么WPF团队以这种方式设计它?
而且,in Silverlight it is an interface.

解决方法

在.NET中,您可以使用NGEN(本机生成器),它可以将IL代码编译为适用于运行应用程序的特定计算机的机器代码. (您无法使用此工具将IL代码编译为所有计算机的机器代码,此工具依赖于cpu,操作系统和…].由于此工具,您的应用程序的性能将会提升太多.

在WPF(.NET)版本代码中使用的属性[TargetedPatchingOptOut]用于NGEN工具,此属性在构造函数之上使用,因此此处的接口不适用.

在Silverlight中你没有NGEN,你没有名为[TargetedPatchingOptOut]的属性

祝好运

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐