我有一個interface
:C#團結泛型接口和抽象類
public interface IMigrationSchema<T>
{
T MapEvent(IOtherEvent sourceEvent);
}
由abstract
類實現:
public abstract class MigrationSchema<T> : IMigrationSchema<T>
{
public abstract T MapEvent(IOtherEvent sourceEvent);
}
,然後實際執行我MigrationSchema
的:
public class MigrationSchemaImpl: MigrationSchema<EventAfterMigration>
{
public MigrationSchemaImpl()
: base()
{
}
public override EventAfterMigrationMapEvent(IOtherEvent actualSourceEvent)
{
return new EventAfterMigration(actualSourceEvent);
}
}
知道:
public class EventAfterMigration : BaseEvent
我想怎麼做理想:
var migrationSchema = container.Resolve<IMigrationSchema<BaseEvent>>();
,並具有在我的配置文件:
<register type="IMigrationSchema`1[[MyApp.BaseEvent, MyApp]]" mapTo="MigrationSchemaImpl">
我知道這似乎是抽象的,我測試過了很多的的可能性,但每次我得到InvalidCastException
,說
MigrationSchemaImpl cannot be cast to IMigrationSchema1[BaseEvent]
我覺得這是完全可行的,但我錯過了一些簡單的東西。任何幫助感謝!
您是否在IMigrationSchema1 [[MyApp.BaseEvent,MyApp]]''中嘗試了''1'? – jcharlesworthuk
是的,也不起作用。 – LaurentH