Skip to content

Commit c52ec3b

Browse files
fixup! Replace IObjectsFactory with IServiceProvider interface
Avoid a possible breaking change
1 parent ae4d2b4 commit c52ec3b

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

src/NHibernate/Cfg/Environment.cs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,35 @@ public static IDictionary<string, string> Properties
388388
public static IBytecodeProvider BytecodeProvider
389389
{
390390
get { return BytecodeProviderInstance; }
391-
set { BytecodeProviderInstance = value; }
391+
set
392+
{
393+
BytecodeProviderInstance = value;
394+
395+
// 6.0 TODO: remove following code.
396+
#pragma warning disable 618
397+
var objectsFactory = BytecodeProviderInstance.ObjectsFactory;
398+
if (objectsFactory != null && !(objectsFactory is ActivatorObjectsFactory))
399+
ServiceProvider = new ObjectsFactoryWrapper(objectsFactory);
400+
#pragma warning restore 618
401+
}
402+
}
403+
404+
// Since its creation
405+
[Obsolete("Transition class")]
406+
private class ObjectsFactoryWrapper : IServiceProvider
407+
{
408+
private readonly IObjectsFactory _objectsFactory;
409+
public ObjectsFactoryWrapper(IObjectsFactory objectsFactory)
410+
{
411+
_objectsFactory = objectsFactory;
412+
}
413+
414+
public object GetService(System.Type serviceType)
415+
{
416+
if (serviceType.IsAbstract || serviceType.IsInterface)
417+
return null;
418+
return _objectsFactory.CreateInstance(serviceType);
419+
}
392420
}
393421

394422
/// <summary>

0 commit comments

Comments
 (0)