0

Unity has a great feature providing a way to inject multiple implementations from a common interface.

The way it resolves a specific implementation is by name.

This is the example.

I would like to know how I could do the same thing with Spring.NET.

For example I have the following objects where both A and B resolvers use the same interface.

Follows the spring configuration:

<?xml version="1.0" encoding="utf-8"?>

<objects xmlns="http://www.springframework.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd http://www.springframework.net/aop http://www.springframework.net/xsd/spring-aop.xsd" xmlns:db="http://www.springframework.net/database" xmlns:aop="http://www.springframework.net/aop" xmlns:tx="http://www.springframework.net/tx">

    <object id="A" type="Program.Mappers.Resolvers.A, Program"></object>

    <object id="B" type="Program.Mappers.Resolvers.B, Program"></object>

</objects>

Spring.NET does not accept this because both objects use the same interface.

How can I solve it?

1
  • I have add the completed XML spring configuration contents. Commented Oct 8, 2014 at 14:55

1 Answer 1

1

Any IApplicationContext is a IObjectFactory and this interface has methods to perform that.

//
// Summary:
//     Return an instance (possibly shared or independent) of the given object name.
//
// Parameters:
//   name:
//     The name of the object to return.
//
// Type parameters:
//   T:
//     The type of the object to return.
//
// Returns:
//     The instance of the object.
//
// Exceptions:
//   Spring.Objects.Factory.NoSuchObjectDefinitionException:
//     If there's no such object definition.
//
//   Spring.Objects.Factory.ObjectNotOfRequiredTypeException:
//     If the object is not of the required type.
//
//   Spring.Objects.ObjectsException:
//     If the object could not be created.
//
// Remarks:
//      This method allows an object factory to be used as a replacement for the
//     Singleton or Prototype design pattern.
//     Note that callers should retain references to returned objects. There is
//     no guarantee that this method will be implemented to be efficient. For example,
//     it may be synchronized, or may need to run an RDBMS query.
//     Will ask the parent factory if the object cannot be found in this factory
//     instance.
T GetObject<T>(string name);
Sign up to request clarification or add additional context in comments.

1 Comment

Spring.Net was designed to improve IoC and DI capabilities, if many classes of your ecosystem are requesting dependencies from container, you are doing it wrong.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.