Hi,

On Fri, Aug 19, 2011 at 9:26 AM, Hendry Luk <[email protected]> wrote:
> I've attached a repro test.
> Cheers

Thanks for the test.

The issue lies in the fact that when you read an assembly, by default,
it doesn't register itself into the resolver. You can fix it easily by
doing something like:

        class RegisteringResolver : DefaultAssemblyResolver
        {
                public AssemblyDefinition ReadAssembly(string file)
                {
                        var assembly = AssemblyDefinition.ReadAssembly(file, new
ReaderParameters { AssemblyResolver = this });
                        RegisterAssembly(assembly);
                        return assembly;
                }
        }

        [TestFixture]
        public class TypeDefinitionEqualityTest
        {
                [Test]
                public void 
ResolvingWithReflectionType_ShouldReturnEqualTypeDefinition()
                {
                        var resolver = new RegisteringResolver();
                        var asm = 
resolver.ReadAssembly(Assembly.GetExecutingAssembly().GetName().Name
+ ".dll");

                        var thisType = GetType();
                        var cecilType = asm.MainModule.Types.First(x => x.Name 
==
thisType.Name).Resolve();

                        Assert.AreEqual(cecilType, 
cecilType.Module.Import(thisType).Resolve());
                }
        }

And making sure all assemblies are read through the registering resolver.

Jb

-- 
--
mono-cecil

Reply via email to