【问题标题】:Silverlight reflection银光反射
【发布时间】:2011-03-05 06:07:47
【问题描述】:

例如,使用 ASP.NET,我们可以反映 AppDomain 中的程序集,或者使用类型我们可以获得关于类的元数据(道具、方法等)。在 Silverlight 中用于提取类元数据、提取依赖属性等的技术是什么?

【问题讨论】:

    标签: c# .net silverlight reflection silverlight-4.0


    【解决方案1】:

    Silverlight 中存在反射,完整的 .NET Framework 中提供了 API 的子集。

    一个显着的区别是您不能反映到 Silverlight 中的私有成员(或者您可以在自己的程序集中,但边界应该很快就会变得明显)。这是一项安全功能,可确保您不会弄乱框架本身的内部结构。

    除了那个(不可否认,相当大的)限制之外,反射应该基本相同。

    【讨论】:

    • 您可以反映私有成员,但不能修改或调用它们。例如,我尝试为 FieldInfo 调用 GetValue,但无法调用 SetValue,它会引发异常。
    【解决方案2】:

    除了 Austin 所说的之外,Silverlight 中反射的规则是,您只能通过反射访问您可以通过普通代码访问的任何内容。所以这不仅仅是关于私人成员。您只能在类本身或任何继承它的类中反射受保护的成员。

    API 有许多缺失的部分,但总的来说,大多数事情都应该是可能的,即使它们比完整的 .NET 需要更多的工作

    【讨论】:

      【解决方案3】:

      反射的安全注意事项 反射提供了获取有关类型和成员的信息以及访问成员的能力。在 Silverlight 中,您可以使用反射来执行以下任务:

      枚举类型和成员,并检查它们的元数据。

      枚举和检查程序集和模块。

      访问公共成员。

      在调用代码的程序集中访问内部成员(Visual Basic 中的朋友成员)。 (在反射中,这被称为程序集级访问。)

      在 Silverlight 中,您不能使用反射来访问私有类型和成员。如果一个类型或成员的访问级别会阻止您在静态编译的代码中访问它,则您不能使用反射来动态访问它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-02
        • 2011-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多