TypeName Struct


Substitutes for System.Type such that type information reported by other APIs doesn't have a dependency on the common language runtime (CLR). This structure is used as a value by properties such as UnderlyingType and Type.

.NET When programming with .NET, this type is hidden and you should use the System.Type type. All Windows Runtime APIs that use a TypeName per the raw IDL signatures will instead use System.Type values when you use the API with .NET code.

C++/WinRT You can use the winrt::xaml_typename<T>() helper function to create a TypeName object. See winrt::xaml_typename function template for more details, and a code example.

public value class TypeName
struct TypeName
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
public struct Type
Public Structure Type

Windows 10 requirements

Device family
Windows 10 (introduced in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduced in v1.0)


Projection and members of TypeName

If you are using Visual C++ component extensions (C++/CX), then Name and Kind are read-write properties, not fields. This definition of the structure is provided by platform.winmd, as part of the extension behavior.

If you are programming with C++ using the Windows Runtime Template Library (WRL), then Name and Kind are fields.



A TypeKind value containing basic guidance regarding the origin of the type.


The name of the type. Depending on the value of Kind (see below), Name can contain any of the following.

  • If Kind is set to TypeKind::Custom, then the contents of Name is unspecified, and language-projection-dependent (in the case of C#, the value is a fully-qualified name).
  • If Kind is set to TypeKind::Metadata, then Name contains the Windows Runtime class name, such as "Windows.UI.Xaml.Controls.Button".
  • If Kind is set to TypeKind::Primitive, then Name contains a primitive name, such as "Int32".

Applies to

See also