From 6e8f1907cba792f75971a30a45e8e5fe09b8ce0d Mon Sep 17 00:00:00 2001 From: Alexander Zaytsev Date: Sun, 8 Apr 2018 12:22:54 +1200 Subject: [PATCH] Fix TypeLoadException in StaticProxyFactory when class has not visible interfaces Fixes #1643 --- .../StaticProxyFactoryFixture.cs | 28 +++++++++++++++++++ .../Proxy/NHibernateProxyBuilder.cs | 2 ++ 2 files changed, 30 insertions(+) create mode 100644 src/NHibernate.Test/StaticProxyTest/StaticProxyFactoryFixture.cs diff --git a/src/NHibernate.Test/StaticProxyTest/StaticProxyFactoryFixture.cs b/src/NHibernate.Test/StaticProxyTest/StaticProxyFactoryFixture.cs new file mode 100644 index 00000000000..72a1937ae20 --- /dev/null +++ b/src/NHibernate.Test/StaticProxyTest/StaticProxyFactoryFixture.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using NHibernate.Proxy; +using NUnit.Framework; + +namespace NHibernate.Test.StaticProxyTest +{ + public class StaticProxyFactoryFixture + { + internal interface ISomething + { + int Id { get; } + } + + public class TestClass : ISomething + { + public virtual int Id { get; set; } + } + + [Test] + public void CanCreateProxyForClassWithInternalInterface() + { + var factory = new StaticProxyFactory(); + factory.PostInstantiate(typeof(TestClass).FullName, typeof(TestClass), new HashSet {typeof(INHibernateProxy)}, null, null, null); + var proxy = factory.GetProxy(1, null); + Assert.That(proxy, Is.Not.Null); + } + } +} diff --git a/src/NHibernate/Proxy/NHibernateProxyBuilder.cs b/src/NHibernate/Proxy/NHibernateProxyBuilder.cs index 8502d950b33..2d7615f65f9 100644 --- a/src/NHibernate/Proxy/NHibernateProxyBuilder.cs +++ b/src/NHibernate/Proxy/NHibernateProxyBuilder.cs @@ -74,6 +74,8 @@ public TypeInfo CreateProxyType(System.Type baseType, IReadOnlyCollection !i.IsVisible); + var typeBuilder = moduleBuilder.DefineType(typeName, typeAttributes, parentType, interfaces.ToArray()); var lazyInitializerField = typeBuilder.DefineField("__lazyInitializer", LazyInitializerType, FieldAttributes.Private);