Skip to content

StackOverflowException occurs when using DependencyOverride #144

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
rikrak opened this issue Mar 15, 2019 · 0 comments
Closed

StackOverflowException occurs when using DependencyOverride #144

rikrak opened this issue Mar 15, 2019 · 0 comments
Assignees
Milestone

Comments

@rikrak
Copy link

rikrak commented Mar 15, 2019

Description

After upgrading my project to v5.9.7 I experience StackOverflowExceptions when executing code that makes use of DependencyOverrides.

Note this is somewhat related to this issue logged in abstractions, but I think this may be a distinct issue.

To Reproduce

See this repo that replicates the problem

    public class Tests
    {
        [TestMethod]
        public void ShouldResolveAlternativeImplementationWhenUsingOverride()
        {
            // arrange
            var target = new UnityContainer();
            target
                .RegisterType<IController, TheController>()
                .RegisterType<IMessageProvider, DefaultMessageProvider>()
                .RegisterType<IMessageProvider, AlternativeMessageProvider>(nameof(AlternativeMessageProvider))
                ;

            var resolvedParameter = new ResolvedParameter<IMessageProvider>( nameof(AlternativeMessageProvider));
            var dependencyOverride = new DependencyOverride<IMessageProvider>(resolvedParameter);

            // act
            var actual = target.Resolve<IController>(dependencyOverride);  // <-- Throws StackOverflowException

            // assert
            Assert.AreEqual(actual.GetMessage(), "Goodbye cruel world!");
        }
    }

    public interface IController
    {
        string GetMessage();
    }

    public class TheController : IController
    {
        private readonly IMessageProvider _messageProvider;

        public TheController(IMessageProvider messageProvider)
        {
            _messageProvider = messageProvider;
        }

        public string GetMessage()
        {
            return _messageProvider.CalculateMessage();
        }
    }

    public interface IMessageProvider
    {
        string CalculateMessage();
    }

    class DefaultMessageProvider : IMessageProvider
    {
        public string CalculateMessage()
        {
            return "Hello World";
        }
    }

    class AlternativeMessageProvider : IMessageProvider
    {
        public string CalculateMessage()
        {
            return "Goodbye cruel world!";
        }
    }
@ENikS ENikS self-assigned this Mar 15, 2019
@ENikS ENikS added the bug label Mar 15, 2019
@ENikS ENikS added this to the 5.9.8 milestone Mar 15, 2019
@ENikS ENikS closed this as completed Mar 17, 2019
ENikS added a commit that referenced this issue Aug 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants