AssemblyQualifiedName Parser






4.33/5 (3 votes)
A parser for AssemblyQualifiedName for .NET
- Download source code - 6.7 KB
- Note: Future enhancements will be part of UniversalSerializer.
What Is It ?
ParsedAssemblyQualifiedName
is a simple parser for type.AssemblyQualifiedName for .NET.
It is a fact that the syntax of AssemblyQualifiedName
is rather complex. While I am working on a new version of UniversalSerializer, I need such a parser and I am unable to find one in the Internet. So here is a class that may help.
Summary
As I said, the syntax of AssemblyQualifiedName
is rather complex, especially with generics.
An example:
Dictionary<int, List<double>>
has this AssemblyQualifiedName
:
System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Collections.Generic.List`1[[System.Double,
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Not very comprehensible!
ParsedAssemblyQualifiedName
will extract these information:
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Collections.Generic.Dictionary<System.Int32, System.Collections.Generic.List<System.Double>>
neutral
b77a5c561934e089
mscorlib
System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],
[System.Collections.Generic.List`1[[System.Double, mscorlib, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
System.Collections.Generic.Dictionary(Of System.Int32, System.Collections.Generic.List(Of System.Double))
4.0.0.0
AssemblyDescriptionString
: This is the assembly description part of theAssemblyQualifiedName
.AssemblyNameDescriptor
: An AssemblyName generated from theAssemblyQualifiedName
. It is Lazy.CSharpStyleName
: A C#-style type name. It is Lazy.Culture
: Culture string of the Assembly.FoundType
: Creates the Type corresponding to theAssemblyQualifiedName
, if available. It is Lazy.GenericParameters
: Gets a list ofParsedAssemblyQualifiedName
, one for each generic parameter. Obviously, it is recursive.PublicKeyToken
: The token of the Assembly.ShortAssemblyName
TypeName
: The first part of theAssemblyQualifiedName
, without the Assembly information.VBNetStyleName
: A VB-style type name. It is Lazy.Version
: Version of the Assembly, as astring
.
Note
Please note ParsedAssemblyQualifiedName
can analyse a type description even if the type does not exist or if it lays in an inaccessible library. In that case, only FoundType
will not produce anything (it will return null
).
Example of Usage
var parsed = new ParsedAssemblyQualifiedName
(typeof(Dictionary<int, List<double>>).AssemblyQualifiedName);
var t = parsed.FoundType.Value;
var an = parsed.AssemblyNameDescriptor.Value;
var cs = parsed.CSharpStyleName.Value;
var vb = parsed.VBNetStyleName.Value;
Conclusion
I hope this small class will be useful to many. Future enhancements will be part of UniversalSerializer.
History
- 2015-01-28 Correction for array types