I'd like to access my aggregate root by an interface it implements:
repository.GetById[[IMyInterface]](id);
What do I need to tell CommonDomain or EventStore to accomplish this? I believe my IConstructAggregates receives the Implementation Type of the aggregate that stored the events. Do i need to just keep my own map of ids.
For example, say I have these agg roots :
class AggRoot1 : IInterface1, IInterface2 {}
class AggRoot2 : IInterface1, IInterface2 {}
I already saved an aggregate1 instance having 'idFromAggRoot1'. Now I want to fetch like so:
repository.GetById<IInterface1>(idFromAggRoot1);
How can I know what I should create later since there are two implementors of IInterface1? AggRoot1? AggRoot2? IInterface1? Activator would bomb here so I know I need to implement IConstructAggregates but wonder if there is some other descriptor to tell me what the original commit agg root type was.