Exemplo n.º 1
0
        public void InstantiateSimpleGenericInstanceType()
        {
            var signature = new GenericInstanceTypeSignature(_dummyGenericType, false,
                                                             new GenericParameterSignature(GenericParameterType.Type, 0));

            var context      = new GenericContext(GetProvider(_module.CorLibTypeFactory.String), null);
            var newSignature = signature.InstantiateGenericTypes(context);

            Assert.Equal(new GenericInstanceTypeSignature(_dummyGenericType, false,
                                                          _module.CorLibTypeFactory.String), newSignature, Comparer);
        }
        public void GenericType(GenericParameterType[] parameterTypes, int[] parameterIndices)
        {
            // Tuple<!0, !1, !2>
            var genericInstance = new GenericInstanceTypeSignature(_importer.ImportType(typeof(Tuple <, ,>)),
                                                                   new GenericParameterSignature(parameterTypes[0], parameterIndices[0]),
                                                                   new GenericParameterSignature(parameterTypes[1], parameterIndices[1]),
                                                                   new GenericParameterSignature(parameterTypes[2], parameterIndices[2])
                                                                   );

            Assert.Equal(new GenericInstanceTypeSignature(_importer.ImportType(typeof(Tuple <, ,>)),
                                                          GetTypeArguments(parameterTypes[0])[parameterIndices[0]],
                                                          GetTypeArguments(parameterTypes[1])[parameterIndices[1]],
                                                          GetTypeArguments(parameterTypes[2])[parameterIndices[2]]
                                                          ), genericInstance.InstantiateGenericTypes(_context), Comparer);
        }
        public void InstantiateSimpleGenericInstanceType()
        {
            var genericType = new TypeReference(
                new AssemblyReference("SomeAssembly", new Version()),
                "SomeNamespace", "SomeType");

            var signature = new GenericInstanceTypeSignature(genericType, false,
                                                             new GenericParameterSignature(GenericParameterType.Type, 0));

            var context      = new GenericContext(GetProvider(_module.CorLibTypeFactory.String), null);
            var newSignature = signature.InstantiateGenericTypes(context);

            Assert.Equal(new GenericInstanceTypeSignature(genericType, false,
                                                          _module.CorLibTypeFactory.String), newSignature, Comparer);
        }
Exemplo n.º 4
0
        public void InstantiateGenericInstanceTypeWithTypeAndMethodArgument()
        {
            var signature = new GenericInstanceTypeSignature(_dummyGenericType, false,
                                                             new GenericParameterSignature(GenericParameterType.Type, 0),
                                                             new GenericParameterSignature(GenericParameterType.Method, 0));

            var context = new GenericContext(
                GetProvider(_module.CorLibTypeFactory.String),
                GetProvider(_module.CorLibTypeFactory.Int32));

            var newSignature = signature.InstantiateGenericTypes(context);

            Assert.Equal(new GenericInstanceTypeSignature(_dummyGenericType, false,
                                                          _module.CorLibTypeFactory.String,
                                                          _module.CorLibTypeFactory.Int32), newSignature, Comparer);
        }
        public void NestedGenericTypes(GenericParameterType[] parameterTypes, int[] parameterIndices)
        {
            // Tuple<0!, List<!0>, Dictionary<!0, !1>>
            var genericInstance = new GenericInstanceTypeSignature(_importer.ImportType(typeof(Tuple <, ,>)),
                                                                   new GenericParameterSignature(parameterTypes[0], parameterIndices[0]),
                                                                   new GenericInstanceTypeSignature(_importer.ImportType(typeof(List <>)),
                                                                                                    new GenericParameterSignature(parameterTypes[1], parameterIndices[1])),
                                                                   new GenericInstanceTypeSignature(_importer.ImportType(typeof(Dictionary <,>)),
                                                                                                    new GenericParameterSignature(parameterTypes[2], parameterIndices[2]),
                                                                                                    new GenericParameterSignature(parameterTypes[3], parameterIndices[3]))
                                                                   );

            Assert.Equal(new GenericInstanceTypeSignature(_importer.ImportType(typeof(Tuple <, ,>)),
                                                          GetTypeArguments(parameterTypes[0])[parameterIndices[0]],
                                                          new GenericInstanceTypeSignature(_importer.ImportType(typeof(List <>)),
                                                                                           GetTypeArguments(parameterTypes[1])[parameterIndices[1]]),
                                                          new GenericInstanceTypeSignature(_importer.ImportType(typeof(Dictionary <,>)),
                                                                                           GetTypeArguments(parameterTypes[2])[parameterIndices[2]],
                                                                                           GetTypeArguments(parameterTypes[3])[parameterIndices[3]])
                                                          ), genericInstance.InstantiateGenericTypes(_context), Comparer);
        }