Exemplo n.º 1
0
        private static bool MatchParameters(GenericContext <ParameterDefinition> baseParameterType, GenericContext <ParameterDefinition> parameterType)
        {
            if (baseParameterType.Item.IsIn != parameterType.Item.IsIn ||
                baseParameterType.Item.IsOut != parameterType.Item.IsOut)
            {
                return(false);
            }
            var baseParam = baseParameterType.ResolveWithContext(baseParameterType.Item.ParameterType);
            var param     = parameterType.ResolveWithContext(parameterType.Item.ParameterType);

            return(IsSameType(baseParam, param));
        }
Exemplo n.º 2
0
        private static bool MatchEvent(GenericContext <EventDefinition> candidate, GenericContext <EventDefinition> ev)
        {
            var mCandidate = candidate.Item;
            var mEvent     = ev.Item;

            if (mCandidate.Name != mEvent.Name)
            {
                return(false);
            }

            if ((mCandidate.AddMethod ?? mCandidate.RemoveMethod).HasOverrides)
            {
                return(false);
            }

            if (!IsSameType(candidate.ResolveWithContext(mCandidate.EventType), ev.ResolveWithContext(mEvent.EventType)))
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 3
0
 private static IEnumerable <GenericContext <TypeDefinition> > BaseTypes(GenericContext <TypeDefinition> type)
 {
     while (type.Item.BaseType != null)
     {
         var baseType        = type.Item.BaseType;
         var genericBaseType = baseType as GenericInstanceType;
         if (genericBaseType != null)
         {
             type = new GenericContext <TypeDefinition>(genericBaseType.ResolveOrThrow(),
                                                        genericBaseType.GenericArguments.Select(t => type.ResolveWithContext(t)));
         }
         else
         {
             type = new GenericContext <TypeDefinition>(baseType.ResolveOrThrow());
         }
         yield return(type);
     }
 }