示例#1
0
        public void CreateInstance_Generics(Type type)
        {
            // Arrange
            var activator = new TypeForwardingActivator(null);
            var name      = type.AssemblyQualifiedName;

            // Act & Assert
            Assert.IsType(type, activator.CreateInstance <object>(name));
        }
示例#2
0
        public void CreateInstance_ThrowsForOpenGenerics(Type type)
        {
            // Arrange
            var activator = new TypeForwardingActivator(null);
            var name      = type.AssemblyQualifiedName;

            // Act & Assert
            Assert.Throws <ArgumentException>(() => activator.CreateInstance <object>(name));
        }
示例#3
0
        private void CreateInstance_ForwardsAcrossVersionChangesImpl(Version newVersion)
        {
            var activator = new TypeForwardingActivator(null);

            var typeInfo     = typeof(ClassWithParameterlessCtor).GetTypeInfo();
            var typeName     = typeInfo.FullName;
            var assemblyName = typeInfo.Assembly.GetName();

            assemblyName.Version = newVersion;
            var newName = $"{typeName}, {assemblyName}";

            Assert.NotEqual(typeInfo.AssemblyQualifiedName, newName);
            Assert.IsType <ClassWithParameterlessCtor>(activator.CreateInstance(typeof(object), newName, out var forwarded));
            Assert.True(forwarded, "Should have forwarded this type to new version or namespace");
        }