public void CreateInstance_Generics(Type type)
        {
            // Arrange
            var activator = new DecryptorTypeForwardingActivator(null);
            var name      = type.AssemblyQualifiedName;

            // Act & Assert
            Assert.IsInstanceOf(type, activator.CreateInstance(typeof(object), name));
        }
        public void CreateInstance_ThrowsForOpenGenerics(Type type)
        {
            // Arrange
            var activator = new DecryptorTypeForwardingActivator(null);
            var name      = type.AssemblyQualifiedName;

            // Act & Assert
            Assert.Throws <ArgumentException>(() => activator.CreateInstance(typeof(object), name));
        }
        private void CreateInstance_ForwardsAcrossVersionChangesImpl(Version newVersion)
        {
            var activator = new DecryptorTypeForwardingActivator(null);

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

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

            Assert.AreNotEqual(typeInfo.AssemblyQualifiedName, newName);
            Assert.IsInstanceOf <ClassWithParameterlessCtor>(activator.CreateInstance(typeof(object), newName, out var forwarded));
            Assert.True(forwarded);
        }