KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have an object model that uses Open Generics (Yes, yes, now I have two problems; that's why I'm here :) :- public interface IOGF<T> { } class C { } class D { readonly IOGF<C> _ogf; public D( IOGF<C> ogf ) { _ogf = ogf; } } I'm trying to get AutoFixture to generate Anonymous instances of D above. However, on its own, AutoFixture doesn't have a built in strategy for building an IOGF<> and hence we observe: public class OpenGenericsBinderDemo { [Fact] public void X() { var fixture = new Fixture(); Assert.Throws<Ploeh.AutoFixture.ObjectCreationException>( () => fixture.CreateAnonymous<D>() ); } The underlying message is: Ploeh.AutoFixture.ObjectCreationException : AutoFixture was unable to create an instance from IOGF`1[C], most likely because it has no public constructor, is an abstract or non-public type. I'm happy to provide it a concrete implementation: public class OGF<T> : IOGF<T> { public OGF( IX x ) { } } public interface IX { } public class X : IX { } And an associated binding: fixture.Register<IX,X>(); How do I (or should I even look at the problem that way??) make the following test pass? public class OpenGenericsLearning { [Fact] public void OpenGenericsDontGetResolved() { var fixture = new Fixture(); fixture.Inject<IX>( fixture.Freeze<X>() ); // TODO register or do something that will provide // OGF<C> to fulfill D's IOGF<C> requirement Assert.NotNull( fixture.CreateAnonymous<D>()); } } (There are discussions and issues around this on the codeplex site - I just needed to a quick im
Tags (comma-separated)
Save Edits
Cancel