private void AddGenericTypes(ClassDefinition cd)
{
var collector = new GenericTypeCollector(this.CodeBuilder);
collector.Process(cd);
var counter = cd.GenericParameters.Count;
var innerCollector = new DetectInnerGenerics();
cd.Accept(innerCollector);
foreach (Node node in innerCollector.Values)
{
var param = (IGenericParameter)node.Entity;
var gp = cd.GenericParameters.FirstOrDefault(gpd => gpd.Name.Equals(param.Name));
if (gp == null)
{
gp = CodeBuilder.CreateGenericParameterDeclaration(counter, param.Name);
cd.GenericParameters.Add(gp);
++counter;
}
node.Entity = new InternalGenericParameter(this.TypeSystemServices, gp);
gp["InternalGenericParent"] = (param as InternalGenericParameter).Node;
}
}