public ClassWithTypeSymbol Create(ITypeSymbol classSymbol) { var @class = new ClassWithTypeSymbol(classSymbol) {Name = classSymbol.Name}; // create readers for reading symbol members var symbolReaders = new SemanticTypeReaderBase[] { new PropertySymbolReader(@class), new MethodSymbolReader(@class), new EventSymbolReader(@class) }; foreach (var symbolReader in symbolReaders) symbolReader.VisitSymbol(classSymbol); // search base classes until we reach System.Object where we stop if (classSymbol.BaseType != null && classSymbol.BaseType.SpecialType != SpecialType.System_Object) @class.BaseClass = Create(classSymbol.BaseType); // add interfaces to interface list foreach (var @interface in classSymbol.Interfaces) @class.Interfaces.AddInterface(new Interface(@interface)); return @class; }
public MixinReference(string name, ClassWithTypeSymbol type) { Name = name; Class = type; }