Example #1
0
        public void VersionInAssemblyQualifiedTypeNameExternal()
        {
            // A syntax error in version, culture or token is silently ignored...
            Type tSyntaxError = Type.GetType("ExternalDll.ExternalClass, CK.Storage.Tests.ExternalDll, VersionSYNTAX=1.0.0.0, CultureSYNTAX=neutral, PublicKeyTokenSYNTAX=b77a5c561934e089", true);

            Assert.That(tSyntaxError, Is.Not.Null);
            //As dlls are signed, version, culture & PublicTokenKey must match. Testing the WeakTypeFinder, that truncates these information, to load the type regardeless of them
            ISimpleTypeFinder wtf = SimpleTypeFinder.WeakDefault;
            Type t2 = SimpleTypeFinder.WeakDefault.ResolveType("ExternalDll.ExternalClass, CK.Storage.Tests.ExternalDll, Version=5.0.4.0, Culture=neutral, PublicKeyToken=null", true);
            Type t1 = SimpleTypeFinder.WeakDefault.ResolveType("ExternalDll.ExternalClass, CK.Storage.Tests.ExternalDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", true);
            //Provinding only namespace.classname, assembly works properly
            Type t0 = Type.GetType("ExternalDll.ExternalClass, CK.Storage.Tests.ExternalDll", true);

            // When the full name or the assembly can not be found, GetType( ..., false ) gently returns null.
            //
            Type tClassNotFound = Type.GetType("ExternalDll.Unknown.ExternalClass, CK.Storage.Tests.ExternalDll", false);

            Assert.That(tClassNotFound, Is.Null);

            Type tAssemblyNotFound = Type.GetType("ExternalDll.ExternalClass, CK.Storage.Tests.Unknown.ExternalDll", false);

            Assert.That(tAssemblyNotFound, Is.Null);


            // BUT: an invalid PublicKeyToken throws a FileLoadException regardless of the throwOnError parameter...
            //
            // Type tInvalidSignature = Type.GetType( "ExternalDll.ExternalClass, CK.Storage.Tests.ExternalDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", false );
            Assert.Throws <FileLoadException>(() => Type.GetType("ExternalDll.ExternalClass, CK.Storage.Tests.ExternalDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", false));
        }
Example #2
0
        Type GetType(string typeName)
        {
            ISimpleTypeFinder f = ComponentModelExtension.GetService <ISimpleTypeFinder>(this);

            if (f == null)
            {
                return(Type.GetType(typeName, !_ignoreUnresolvedType));
            }
            return(f.ResolveType(typeName, !_ignoreUnresolvedType));
        }