XamlMember 类

定义

为 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报告trueIsUnknown引发 。

除非你的实现可以处理 来自 XamlObjectWriter的异常,或者你有其他方法来调整XamlObjectWriter行为,否则不应构造XamlMember值为 trueIsUnknown 。 例如,以下一项或多项可能适用于实现:

构造函数

XamlMember(EventInfo, XamlSchemaContext)

使用 CLR 类型系统 XamlMemberEventInfo 初始化 XamlSchemaContext 类的新实例。

XamlMember(EventInfo, XamlSchemaContext, XamlMemberInvoker)

使用 CLR 类型系统 XamlMemberEventInfo(包括 XamlSchemaContext 信息)初始化 XamlMemberInvoker 类的新实例。

XamlMember(PropertyInfo, XamlSchemaContext)

使用 CLR 类型系统 XamlMemberPropertyInfo 初始化 XamlSchemaContext 类的新实例。

XamlMember(PropertyInfo, XamlSchemaContext, XamlMemberInvoker)

使用反射 XamlMemberPropertyInfo(包括 XamlSchemaContext 信息)初始化 XamlMemberInvoker 类的新实例。

XamlMember(String, MethodInfo, MethodInfo, XamlSchemaContext)

针对表示可附加属性的 XamlMember 初始化 XamlMember 类的新实例。

XamlMember(String, MethodInfo, MethodInfo, XamlSchemaContext, XamlMemberInvoker)

针对表示可附加属性的 XamlMember(包括 XamlMember 信息)初始化 XamlMemberInvoker 类的新实例。

XamlMember(String, MethodInfo, XamlSchemaContext)

针对表示可附加事件的 XamlMember 初始化 XamlMember 类的新实例。

XamlMember(String, MethodInfo, XamlSchemaContext, XamlMemberInvoker)

针对表示可附加事件的 XamlMember(包括 XamlMember 信息)初始化 XamlMemberInvoker 类的新实例。

XamlMember(String, XamlType, Boolean)

使用字符串名称和声明 XamlMember 信息初始化 XamlType 类的新实例。 使用此签名构造的 XamlMember 具有很大的限制。

属性

DeclaringType

获取类型的 XamlType,该类型声明与此 XamlMember 关联的成员。

DeferringLoader

获取一个 XamlValueConverter<TConverterBase> 对象,该对象用于 XAML 声明的对象的延迟加载。

DependsOn

获取 XamlMember 对象的列表。 这些对象报告一些成员,其中的初始化顺序依赖关系相对于此 XamlMember 存在。

Invoker

获取与此 XamlMemberInvoker 关联的 XamlMember 实现。

IsAmbient

获取一个值,该值指示是否将此 XamlMember 报告为一个环境属性。

IsAttachable

获取一个值,该值指示此 XamlMember 是否为可附加成员。

IsDirective

获取一个值,该值指示此 XamlMember 是否为 XAML 指令。

IsEvent

获取一个值,该值指示此 XamlMember 是否表示事件成员。

IsNameValid

获取一个值,该值指示是否使用有效的 xamlName 字符串作为其 XamlMember 来初始化此 Name

IsReadOnly

获取一个值,该值指示此 XamlMember 是否表示只读成员。

IsReadPublic

获取一个值,该值指示此 XamlMember 是否表示一个具有可调用公共 get 访问器的成员。

IsUnknown

获取一个值,该值指示用于类型和成员解析的支持系统是否无法解析成员。

IsWriteOnly

获取一个值,该值指示此 XamlMember 是否表示只写成员。

IsWritePublic

获取一个值,该值指示此 XamlMember 是否表示一个具有可调用公共 set 访问器的成员。

MarkupExtensionBracketCharacters

定义标记扩展的开始和结束括号字符。

Name

获取 xamlName 名称字符串,该字符串声明此 XamlMember

PreferredXamlNamespace

获取单个 XAML 命名空间 URI,该 URI 标识此 XamlMember 的主 XAML 命名空间。

SerializationVisibility

获取一个 DesignerSerializationVisibility 值,该值指示可视化设计器应如何处理成员。

TargetType

获取其中可能存在 XamlType 的类型的 XamlMember

Type

获取成员所使用的类型的 XamlType

TypeConverter

获取一个 XamlValueConverter<TConverterBase> 对象,该对象可用于 XAML 声明的对象的类型转换构造。

UnderlyingMember

获取 CLR 类型系统 MemberInfo,它可用于由 PropertyInfoMethodInfoEventInfo 构造的成员。

ValueSerializer

获取一个 XamlValueConverter<TConverterBase> 对象,该对象用于 XAML 声明的对象的值序列化。

方法

Equals(Object)

指示当前对象是否等于另一个对象。

Equals(XamlMember)

指示当前对象是否等于同一类型的另一个对象。

GetHashCode()

返回此对象的哈希代码。

GetType()

获取当前实例的 Type

(继承自 Object)
GetXamlNamespaces()

返回 XAML 命名空间的列表,此 XAML 成员可能存在于这些命名空间中。

LookupCustomAttributeProvider()

在派生类中实现时,返回 ICustomAttributeProvider 实现。

LookupDeferringLoader()

返回一个 XamlValueConverter<TConverterBase> 对象,该对象用于 XAML 声明的对象的延迟加载。

LookupDependsOn()

返回 XamlMember 对象的列表。 此列表中的项报告一些成员,其中的初始化顺序依赖关系相对于此 XamlMember 存在。

LookupInvoker()

返回与此 XamlMemberInvoker 关联的 XamlMember

LookupIsAmbient()

返回的值指示是否将此 XamlMember 作为环境属性报告。

LookupIsEvent()

返回的值指示此 XamlMember 是否表示一个事件。

LookupIsReadOnly()

返回的值指示此 XamlMember 是否表示预期的只读属性。

LookupIsReadPublic()

返回的值指示此 XamlMember 是否表示一个具有公共 get 访问器的属性。

LookupIsUnknown()

返回的值指示此 XamlMember 是否表示一个用于类型和成员解析的支持系统无法解析的成员。

LookupIsWriteOnly()

返回的值指示此 XamlMember 是否表示一个具有公共 set 访问器但没有公共 get 访问器的成员。

LookupIsWritePublic()

返回的值指示此 XamlMember 是否表示一个具有公共 set 访问器的成员。

LookupMarkupExtensionBracketCharacters()

返回标记扩展的开始和结束括号字符。

LookupTargetType()

返回其中可能存在 XamlType 的类型的 XamlMember

LookupType()

返回成员所使用的类型的 XamlType

LookupTypeConverter()

返回与此 XamlMember 关联的类型转换器实现。

LookupUnderlyingGetter()

返回与此 XamlMember 关联的 get 访问器。

LookupUnderlyingMember()

返回与此 MemberInfo 关联的 CLR 类型系统 XamlMember

LookupUnderlyingSetter()

返回与此 XamlMember 关联的 set 访问器。

LookupValueSerializer()

返回与此 XamlMember 关联的值序列化程序实现。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回此 XamlMember 的字符串表示形式。

运算符

Equality(XamlMember, XamlMember)

确定两个指定的 XamlMember 对象是否具有相同的值。

Inequality(XamlMember, XamlMember)

确定两个指定的 XamlMember 对象是否具有不同的值。

适用于

另请参阅