Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Persistence/3.3/Core/TypeStringBuilder.cs @ 1555

Last change on this file since 1555 was 1555, checked in by epitzer, 15 years ago

More renaming and refactoring. (#548)

File size: 1.0 KB
Line 
1using System;
2using System.Text;
3
4namespace HeuristicLab.Persistence.Core {
5
6  internal static class TypeStringBuilder {
7
8    internal static void BuildDeclaringTypeChain(Type type, StringBuilder sb) {
9      if ( type.DeclaringType != null ) {
10        BuildDeclaringTypeChain(type.DeclaringType, sb);
11        sb.Append(type.DeclaringType.Name).Append('+');
12      }
13    }
14
15    internal static void BuildVersionInvariantName(Type type, StringBuilder sb) {
16      sb.Append(type.Namespace).Append('.');
17      BuildDeclaringTypeChain(type, sb);
18      sb.Append(type.Name);
19      if (type.IsGenericType) {
20        sb.Append("[");
21        Type[] args = type.GetGenericArguments();
22        for ( int i = 0; i<args.Length; i++ ) {
23          sb.Append("[");
24          BuildVersionInvariantName(args[i], sb);
25          sb.Append("],");
26        }
27        if (args.Length > 0)
28          sb.Remove(sb.Length - 1, 1);
29        sb.Append("]");
30      }           
31      sb.Append(", ").Append(type.Assembly.GetName().Name);
32    }
33
34  }
35 
36}
Note: See TracBrowser for help on using the repository browser.