Exemplo n.º 1
0
 private void AssertMember <T>(InjectMemberInfo member, string name, string canonicalName, bool isOptional = false)
 {
     Assert.That(member.Name, Is.EqualTo(name));
     Assert.That(member.Type, Is.EqualTo(typeof(T)));
     Assert.That(member.IsOptional, Is.EqualTo(isOptional));
     Assert.That(member.CanonicalName, Is.EqualTo(canonicalName));
 }
Exemplo n.º 2
0
        private bool TryGetParameterizedBinding <TGenerator>(
            InjectMemberInfo injectMemberInfo,
            TypeReference containingType,
            string memberTypeName,
            string providedTypeName,
            Predicate <InjectMemberInfo> isParameterizedBinding,
            Func <InjectMemberInfo, TypeReference, TGenerator> selector,
            out TGenerator generator)
        {
            generator = default(TGenerator);

            if (!isParameterizedBinding(injectMemberInfo))
            {
                return(false);
            }

            var memberType = injectMemberInfo.Type as GenericInstanceType;

            if (memberType == null || memberType.GenericArguments.Count != 1)
            {
                var error = string.Format(
                    "{0} '{1}' of type '{2}' was detected as '{3}' but is actually a '{4}'; please report this as a bug.",
                    memberTypeName,
                    injectMemberInfo.MemberName,
                    containingType.FullName,
                    providedTypeName,
                    injectMemberInfo.Type.FullName);
                errorReporter.LogError(error);
                return(false);
            }

            generator = selector(injectMemberInfo, memberType.GenericArguments[0]);

            return(true);
        }
Exemplo n.º 3
0
 private bool TryGetLazyGenerator(InjectMemberInfo injectMemberInfo, TypeReference containingType, string memberTypeName, out LazyBindingGenerator generator)
 {
     return(TryGetParameterizedBinding(
                injectMemberInfo,
                containingType,
                memberTypeName,
                "Lazy<T>",
                imi => imi.HasLazyKey,
                (imi, t) => new LazyBindingGenerator(moduleDefinition, references, imi.Key, imi.LazyKey, t),
                out generator));
 }
Exemplo n.º 4
0
 private bool TryGetProviderGenerator(InjectMemberInfo injectMemberInfo, TypeDefinition containingType, string memberTypeName, out ProviderBindingGenerator generator)
 {
     return(TryGetParameterizedBinding(
                injectMemberInfo,
                containingType,
                memberTypeName,
                "IProvider<T>",
                imi => imi.HasProviderKey,
                (imi, t) => new ProviderBindingGenerator(moduleDefinition, references, imi.Key, imi.ProviderKey, t),
                out generator));
 }