Esempio n. 1
0
        private void ComputeConstructorOverloads(ITypeSymbol type, SymbolMetaData meta)
        {
            meta.ConstructorCount = type.GetMembers().Count(t =>
                t.Kind == SymbolKind.Method && ((IMethodSymbol)t).MethodKind == MethodKind.Constructor && !t.IsStatic);
            meta.HasConstructorOverloads = meta.ConstructorCount > 1;

            if (meta.ConstructorCount < 2 && type.BaseType != null && type.BaseType.SpecialType != SpecialType.System_Object)
            {
                meta.HasConstructorOverloads = HasConstructorOverloads(type.BaseType);
            }
        }
Esempio n. 2
0
 private SymbolMetaData GetOrCreateMeta(ISymbol symbol)
 {
     lock (this)
     {
         if (!_symbolMetaCache.TryGetValue(symbol, out var meta))
         {
             _symbolMetaCache[symbol] = meta = new SymbolMetaData();
         }
         return meta;
     }
 }