XamlMember 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为 XAML 类型的成员提供 XAML 类型系统标识符。 该标识符由 XAML 读取器和 XAML 编写器在处理成员节点的过程中使用(如果 XAML 读取器位于 StartMember 上),另外还用于常规 XAML 类型系统逻辑。
public ref class XamlMember : IEquatable<System::Xaml::XamlMember ^>
public class XamlMember : IEquatable<System.Xaml.XamlMember>
type XamlMember = class
interface IEquatable<XamlMember>
Public Class XamlMember
Implements IEquatable(Of XamlMember)
- 继承
-
XamlMember
- 派生
- 实现
注解
XamlMember可以使用三种方法返回有关 XAML 成员的信息:标准公共语言运行时 (CLR) 反射;调用使用优化位标志的内部 API 的仅引用反射技术;或调用由可能的XamlMember子类提供的 API 的虚拟替代Lookup*
。 对于.NET Framework XAML 服务 API 和 API 的XamlMember大多数使用,请使用默认 XAML 架构上下文。 .NET Framework XAML 服务的默认 XAML 架构上下文对类型系统使用 CLR 支持。 这使 XAML 读取器和 XAML 编写器能够使用在 CLR 中定义或可用于 CLR 及其反射技术的任何类型或成员。
Lookup* API 和 XamlMember 派生类
XamlMember 定义派生类可能替代的多个虚拟成员。 这些成员的名称始终以字符串 Lookup
开头。 然后,API 名称的其余部分将引用虚拟方法影响的属性。 例如, XamlMember 派生类可能会重写 LookupTargetType 以影响基定义属性 TargetType 在派生类中返回的内容。 可以通过阅读相关Lookup*
方法的文档来预测或现有派生类中XamlMember此类属性的返回值。
这些方法的目的是 Lookup*
提供包含基类的 XamlMember XAML 类型系统扩展技术。 通过从 XamlMember 虚拟成员派生并重写 Lookup
虚拟成员,可以在 XAML 类型系统中为 XAML 架构定义 XAML 成员的概念,而无需绑定到支持类型系统或技术的具体内容。 还可以在此方案下使用提供的 XAML 架构上下文,并且仍返回所需结果。
例如,请考虑 XamlMember 属性 IsWritePublic。 此属性通知调用方,使用 进行序列化等 XamlWriter 操作可以在目标对象上写入此成员的值。 在默认实现中,确定成员是否可写是通过对支持 CLR Type 及其成员 () 的反射技术确定的 MemberInfo 。 因此,默认情况下,XAML 类型系统依赖于 CLR 类型系统。 但是,可以通过重写 API LookupIsWritePublic来删除 XAML 类型系统报告的IsWritePublic此依赖项。 在替代中,可以使用其他决定,例如特定于你的技术的元数据、针对固定 XAML 词汇优化的主查阅表,或用于确定 XAML 成员在 XAML 词汇表中是否可写的各种其他策略。
构造不使用 XAML 架构上下文的 XamlMember
的大多数构造函数 XamlMember 都需要 XamlSchemaContext 作为其初始化的一部分。 XamlSchemaContext对于许多内部XamlSchemaContext操作(例如,获取从支持类型转发的信息)也是必需的。 使用 XamlMember API 时,通常有一个 XamlSchemaContext 可从周围构造(如 )获取的 XamlWriter。 在这种情况下,可以将引用传递给 XamlSchemaContext 需要 XAML 架构上下文的所有 XAML 类型系统调用。
一个特定的构造函数 XamlMember(String, XamlType, Boolean)不需要 XamlSchemaContext。 但是,XamlMember使用 XamlMember(String, XamlType, Boolean) 签名构造的 为 IsUnknown返回 true
。
对于涉及 的 XamlObjectWriter加载路径,此类成员不能写入对象图。 使用 .NET Framework XAML 服务实现时, XamlObjectWriter.WriteStartMember 调用会在 XamlObjectWriterException 的相关XamlMember报告true
时IsUnknown引发 。
除非你的实现可以处理 来自 XamlObjectWriter的异常,或者你有其他方法来调整XamlObjectWriter行为,否则不应构造XamlMember值为 true
的 IsUnknown 。 例如,以下一项或多项可能适用于实现:
- XAML 架构上下文稍后提供。
- 使用成员调用程序模式。
- 在自定义 XAML 编写器中有意重写 XamlObjectWriter.WriteStartMember 。
构造函数
属性
DeclaringType |
获取类型的 XamlType,该类型声明与此 XamlMember 关联的成员。 |
DeferringLoader |
获取一个 XamlValueConverter<TConverterBase> 对象,该对象用于 XAML 声明的对象的延迟加载。 |
DependsOn |
获取 XamlMember 对象的列表。 这些对象报告一些成员,其中的初始化顺序依赖关系相对于此 XamlMember 存在。 |
Invoker |
获取与此 XamlMemberInvoker 关联的 XamlMember 实现。 |
IsAmbient |
获取一个值,该值指示是否将此 XamlMember 报告为一个环境属性。 |
IsAttachable |
获取一个值,该值指示此 XamlMember 是否为可附加成员。 |
IsDirective |
获取一个值,该值指示此 XamlMember 是否为 XAML 指令。 |
IsEvent |
获取一个值,该值指示此 XamlMember 是否表示事件成员。 |
IsNameValid |
获取一个值,该值指示是否使用有效的 |
IsReadOnly |
获取一个值,该值指示此 XamlMember 是否表示只读成员。 |
IsReadPublic |
获取一个值,该值指示此 XamlMember 是否表示一个具有可调用公共 |
IsUnknown |
获取一个值,该值指示用于类型和成员解析的支持系统是否无法解析成员。 |
IsWriteOnly |
获取一个值,该值指示此 XamlMember 是否表示只写成员。 |
IsWritePublic |
获取一个值,该值指示此 XamlMember 是否表示一个具有可调用公共 |
MarkupExtensionBracketCharacters |
定义标记扩展的开始和结束括号字符。 |
Name |
获取 |
PreferredXamlNamespace |
获取单个 XAML 命名空间 URI,该 URI 标识此 XamlMember 的主 XAML 命名空间。 |
SerializationVisibility |
获取一个 DesignerSerializationVisibility 值,该值指示可视化设计器应如何处理成员。 |
TargetType |
获取其中可能存在 XamlType 的类型的 XamlMember。 |
Type |
获取成员所使用的类型的 XamlType。 |
TypeConverter |
获取一个 XamlValueConverter<TConverterBase> 对象,该对象可用于 XAML 声明的对象的类型转换构造。 |
UnderlyingMember |
获取 CLR 类型系统 MemberInfo,它可用于由 PropertyInfo、MethodInfo 或 EventInfo 构造的成员。 |
ValueSerializer |
获取一个 XamlValueConverter<TConverterBase> 对象,该对象用于 XAML 声明的对象的值序列化。 |
方法
运算符
Equality(XamlMember, XamlMember) |
确定两个指定的 XamlMember 对象是否具有相同的值。 |
Inequality(XamlMember, XamlMember) |
确定两个指定的 XamlMember 对象是否具有不同的值。 |