示例#1
0
 public TypeSymbolInfo(TypeSymbol typeSymbol)
 {
     _typeSymbol         = typeSymbol;
     Name                = typeSymbol.Name;
     FullName            = typeSymbol.ToString();
     ContainingNamespace = typeSymbol.ContainingNamespace == null
         ? null
         : typeSymbol.ContainingNamespace.ToString();
     AllInterfaces = GetAllInterfaces(typeSymbol);
     TypeArguments = GetTypeArguments(typeSymbol);
 }
示例#2
0
        public bool IsAssignableFrom(TypeSymbolInfo typeSymbolInfo)
        {
            var typeSymbolString = _typeSymbol.ToString();

            for (var typeSymbolLoop = typeSymbolInfo._typeSymbol; typeSymbolLoop != null; typeSymbolLoop = typeSymbolLoop.BaseType)
            {
                if (typeSymbolLoop.ToString() == typeSymbolString)
                {
                    return(true);
                }

                var typeSymbolLoopString = typeSymbolLoop.ToString();

                if (typeSymbolLoop.GetMembers().OfType <IMethodSymbol>().Where(m => m.Name == "op_Implicit" || m.Name == "op_Explicit").Any(op => op.ReturnType.ToString() == typeSymbolString) || _typeSymbol.GetMembers().OfType <IMethodSymbol>().Where(m => m.Name == "op_Implicit" || m.Name == "op_Explicit").Any(op => op.ReturnType.ToString() == typeSymbolLoopString))
                {
                    return(true);
                }
            }
            if (typeSymbolInfo._typeSymbol.AllInterfaces.Any(i => i.ToString() == typeSymbolString))
            {
                return(true);
            }
            return(false);
        }
示例#3
0
文件: Mocks.cs 项目: bnjMichel/waqs
 public TypeSymbolInfo(TypeSymbol typeSymbol)
 {
     _typeSymbol = typeSymbol;
     Name = typeSymbol.Name;
     FullName = typeSymbol.ToString();
     ContainingNamespace = typeSymbol.ContainingNamespace == null
         ? null
         : typeSymbol.ContainingNamespace.ToString();
     AllInterfaces = GetAllInterfaces(typeSymbol);
     TypeArguments = GetTypeArguments(typeSymbol);
 }