TypeName TypeName TypeName 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 : struct TypeName
struct winrt::Windows::UI::Xaml::Interop::TypeName
public struct TypeName
Public Structure TypeName

Windows 10 requirements

Device family
Windows 10 (introduced v10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)


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.


Kind Kind Kind Kind

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

Name Name Name Name

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".

See also