Type.FullName Property
Gets the fully qualified name of the type, including its namespace but not its assembly.
Assembly: mscorlib (in mscorlib.dll)
Property Value
Type: System.StringThe fully qualified name of the type, including its namespace but not its assembly; or null if the current instance represents a generic type parameter, an array type, pointer type, or byref type based on a type parameter, or a generic type that is not a generic type definition but contains unresolved type parameters.
Implements
_Type.FullNameFor example, the fully qualified name of the String type is System.String. Contrast this with the assembly-qualified name returned by the AssemblyQualifiedName property, which consists of the full name plus the full assembly name.
If the current type represents a closed generic type, the type arguments in the string returned by the FullNameproperty are qualified by their full assembly name, even though the string representation of the generic type itself is not qualified by its full assembly name. The following example illustrates the difference in the FullName property for a type that represents generic type definition and one that represents a closed generic type.
Imports System.Collections.Generic Module Example Public Sub Main() Dim t As Type = GetType(List(Of)) Console.WriteLine(t.FullName) Console.WriteLine() Dim list As New List(Of String)() t = list.GetType() Console.WriteLine(t.FullName) End Sub End Module ' The example displays the following output: ' System.Collections.Generic.List`1 ' ' System.Collections.Generic.List`1[[System.String, mscorlib, ' Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
This property returns null if:
The current Type object represents a type parameter of a generic type.
The following example retrieves the type parameter of the Nullable(Of T) type and attempts to display its FullName property.
Imports System.Reflection Module Example Public Sub Main() Dim t As Type = GetType(Nullable(Of )) Console.WriteLine(t.FullName) If t.IsGenericType Then Console.Write(" Generic Type Parameters: ") Dim gtArgs As Type() = t.GetGenericArguments For ctr As Integer = 0 To gtArgs.Length - 1 Console.WriteLine(If(gtArgs(ctr).FullName, "(unassigned) " + gtArgs(ctr).ToString())) If ctr < gtArgs.Length - 1 Then Console.Write(", ") Next Console.WriteLine() End If End Sub End Module ' The example displays the following output: ' System.Nullable`1 ' Generic Type Parameters: (unassigned) T
The current Type object represents an array type, a pointer type, or a byref type that is based on a generic type parameter.
The following example defines a generic type, Generictype1<T>, with three methods: Display(T[]), which is passed an array of type T; HandleT(T), which is passed a T object; and ChangeValue(ref T), which is passed a T object by reference. Because C# and Visual Basic do not allow us to define T as a pointer in the HandleT method, we have to call the MakePointerType method on the Type object that represents the method's parameter type to create a pointer to a generic type. The output from the example shows that in all three cases, the FullName property is null.
Imports System.Reflection Public Class GenericType1(Of T) Public Sub Display(elements As T()) End Sub ' Visual Basic does not support pointer types. Public Sub HandleT(obj As T) End Sub Public Function ChangeValue(ByRef arg As T) As Boolean Return True End Function End Class Module Example Public Sub Main() Dim t As Type = GetType(GenericType1(Of )) Console.WriteLine("Type Name: {0}", t.FullName) Dim methods() As MethodInfo = t.GetMethods(BindingFlags.Instance Or BindingFlags.DeclaredOnly Or BindingFlags.Public) For Each method In methods Console.WriteLine(" Method: {0}", method.Name) ' Get method parameters. Dim param As ParameterInfo = method.GetParameters()(0) Dim paramType As Type = param.ParameterType If method.Name = "HandleT" Then paramType = paramType.MakePointerType() End If Console.WriteLine(" Parameter: {0}", If(paramType.FullName, paramType.ToString() + " (unassigned)")) Next End Sub End Module ' The example displays the following output: ' Type Name: GenericType1`1 ' Method: Display ' Parameter: T[] (unassigned) ' Method: HandleT ' Parameter: T* (unassigned) ' Method: ChangeValue ' Parameter: T& (unassigned)
The current type contains generic type parameters that have not been replaced by specific types (that is, the ContainsGenericParameters property returns true), but the type is not a generic type definition (that is, the IsGenericTypeDefinition property returns false
In the following example, Derived<T> inherits from Base<T>. The BaseType property obtains the Type object that represents the base type of Derived<T>, and its FullName property returns null.
Imports System.Reflection Public Class Base(Of T) End Class Public Class Derived(Of T) : Inherits Base(Of T) End Class Module Example Public Sub Main() Dim t As Type = GetType(Derived(Of )) Console.WriteLine("Generic Class: {0}", t.FullName) Console.WriteLine(" Contains Generic Paramters: {0}", t.ContainsGenericParameters) Console.WriteLine(" Generic Type Definition: {0}", t.IsGenericTypeDefinition) Console.WriteLine() Dim baseType As Type = t.BaseType Console.WriteLine("Its Base Class: {0}", If(baseType.FullName, "(unassigned) " + baseType.ToString())) Console.WriteLine(" Contains Generic Paramters: {0}", baseType.ContainsGenericParameters) Console.WriteLine(" Generic Type Definition: {0}", baseType.IsGenericTypeDefinition) Console.WriteLine(" Full Name: {0}", baseType.GetGenericTypeDefinition().FullName) Console.WriteLine() t = GetType(Base(Of )) Console.WriteLine("Generic Class: {0}", t.FullName) Console.WriteLine(" Contains Generic Paramters: {0}", t.ContainsGenericParameters) Console.WriteLine(" Generic Type Definition: {0}", t.IsGenericTypeDefinition) End Sub End Module ' The example displays the following output: ' Generic Class: Derived`1 ' Contains Generic Paramters: True ' Generic Type Definition: True ' ' Its Base Class: (unassigned) Base`1[T] ' Contains Generic Paramters: True ' Generic Type Definition: False ' Full Name: Base`1 ' ' Generic Class: Base`1 ' Contains Generic Paramters: True ' Generic Type Definition: True
To get a FullName that is not null, you can use the GetGenericTypeDefinition method to get the generic type definition, as the example illustrates.
This property is read-only.
The following example displays the full name of the specified type.
Imports System Class TestFullName Public Shared Sub Main() Dim t As Type = GetType(Array) Console.WriteLine("The full name of the Array type is {0}.", t.FullName) End Sub 'Main End Class 'TestFullName ' This example produces the following output: ' 'The full name of the Array type is System.Array. '
The following example compares the strings returned by the ToString method and the Name, FullName, and AssemblyQualifiedName properties.
Imports System.Collections.Generic Imports System.Globalization Module Example Public Sub Main() Dim t As Type = GetType(String) ShowTypeInfo(t) t = GetType(System.Collections.Generic.List(Of)) ShowTypeInfo(t) Dim list As New List(Of String)() t = list.GetType() ShowTypeInfo(t) Dim v As Object = 12 t = v.GetType() ShowTypeInfo(t) t = GetType(IFormatProvider) ShowTypeInfo(t) Dim ifmt As IFormatProvider = NumberFormatInfo.CurrentInfo t = ifmt.GetType() ShowTypeInfo(t) End Sub Private Sub ShowTypeInfo(t As Type) Console.WriteLine("Name: {0}", t.Name) Console.WriteLine("Full Name: {0}", t.FullName) Console.WriteLine("ToString: {0}", t.ToString()) Console.WriteLine("Assembly Qualified Name: {0}", t.AssemblyQualifiedName) Console.WriteLine() End Sub End Module ' The example displays output like the following: ' Name: String ' Full Name: System.String ' ToString: System.String ' Assembly Qualified Name: System.String, mscorlib, Version=4.0.0.0, Culture=neutr ' al, PublicKeyToken=b77a5c561934e089 ' ' Name: List`1 ' Full Name: System.Collections.Generic.List`1 ' ToString: System.Collections.Generic.List`1[T] ' Assembly Qualified Name: System.Collections.Generic.List`1, mscorlib, Version=4. ' 0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ' ' Name: List`1 ' Full Name: System.Collections.Generic.List`1[[System.String, mscorlib, Version=4 ' .0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] ' ToString: System.Collections.Generic.List`1[System.String] ' Assembly Qualified Name: System.Collections.Generic.List`1[[System.String, mscor ' lib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorl ' ib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ' ' Name: Int32 ' Full Name: System.Int32 ' ToString: System.Int32 ' Assembly Qualified Name: System.Int32, mscorlib, Version=4.0.0.0, Culture=neutra ' l, PublicKeyToken=b77a5c561934e089 ' ' Name: IFormatProvider ' Full Name: System.IFormatProvider ' ToString: System.IFormatProvider ' Assembly Qualified Name: System.IFormatProvider, mscorlib, Version=4.0.0.0, Cult ' ure=neutral, PublicKeyToken=b77a5c561934e089 ' ' Name: NumberFormatInfo ' Full Name: System.Globalization.NumberFormatInfo ' ToString: System.Globalization.NumberFormatInfo ' Assembly Qualified Name: System.Globalization.NumberFormatInfo, mscorlib, Versio ' n=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1