Пример #1
0
        public void ResolveGenericParameterWithEmptyTypeShouldThrow(GenericParameterType parameterType)
        {
            var context = new GenericContext();

            var parameter = new GenericParameterSignature(parameterType, 0);

            Assert.Throws <ArgumentOutOfRangeException>(() => context.GetTypeArgument(parameter));
        }
Пример #2
0
        public void ResolveTypeGenericParameterWithOnlyMethodShouldThrow()
        {
            var genericInstance = new GenericInstanceMethodSignature();

            genericInstance.TypeArguments.Add(_importer.ImportTypeSignature(typeof(string)));

            var context = new GenericContext(null, genericInstance);

            var parameter = new GenericParameterSignature(GenericParameterType.Type, 0);

            Assert.Throws <ArgumentOutOfRangeException>(() => context.GetTypeArgument(parameter));
        }
Пример #3
0
        public void ResolveTypeGenericParameterWithType()
        {
            var genericInstance = new GenericInstanceTypeSignature(_importer.ImportType(typeof(List <>)), false);

            genericInstance.TypeArguments.Add(_importer.ImportTypeSignature(typeof(string)));

            var context = new GenericContext(genericInstance, null);

            var parameter = new GenericParameterSignature(GenericParameterType.Type, 0);

            Assert.Equal("System.String", context.GetTypeArgument(parameter).FullName);
        }
Пример #4
0
        public void ResolveMethodGenericParameterWithMethod()
        {
            var genericInstance = new GenericInstanceMethodSignature();

            genericInstance.TypeArguments.Add(_importer.ImportTypeSignature(typeof(string)));

            var context = new GenericContext(null, genericInstance);

            var parameter = new GenericParameterSignature(GenericParameterType.Method, 0);

            Assert.Equal("System.String", context.GetTypeArgument(parameter).FullName);
        }
Пример #5
0
        public void ResolveMethodGenericParameterWithTypeAndMethod()
        {
            var genericType = new GenericInstanceTypeSignature(_importer.ImportType(typeof(List <>)), false);

            genericType.TypeArguments.Add(_importer.ImportTypeSignature(typeof(string)));

            var genericMethod = new GenericInstanceMethodSignature();

            genericMethod.TypeArguments.Add(_importer.ImportTypeSignature(typeof(int)));

            var context = new GenericContext(genericType, genericMethod);

            var parameter = new GenericParameterSignature(GenericParameterType.Method, 0);

            Assert.Equal("System.Int32", context.GetTypeArgument(parameter).FullName);
        }
Пример #6
0
 /// <inheritdoc />
 public TypeMemoryLayout VisitGenericParameter(GenericParameterSignature signature) =>
 _currentGenericContext.GetTypeArgument(signature).AcceptVisitor(this);