我正在尝试开发一个通用类来引发事件。
在运行时,我不知道那里会出现什么实体,这就是我决定将其设为通用的原因。问题是,可以存在的每个类型都继承自基类EntityBase
在这个类中,我返回(或者我想 :P )具有正确类型的事件。
public class EntityModifiedEventFactory<TEntity> : IEntityModifiedEventFactory<TEntity> where TEntity : EntityBase
{
private readonly IEventAggregator eventAggregator;
public EntityModifiedEventFactory(IEventAggregator eventAggregator)
{
ParameterChecker.IsNotNull(eventAggregator, "eventAggregator");
this.eventAggregator = eventAggregator;
}
public EntityModifiedEvent<TEntity> Create()
{
return this.eventAggregator.GetEvent<EntityModifiedEvent<TEntity>>();
}
}
这里我调用构造函数然后发布事件(不编译)
private void OnNotifyAgentEntityChanged(object sender, EntityChangedEventArgs entityChangedEventArgs)
{
ViewModelIdentifierEventArgs<entityChangedEventArgs.Entity.GetType()> eventArgs = new ViewModelIdentifierEventArgs<entityChangedEventArgs.Entity.GetType() > (entityChangedEventArgs.ViewModelIdentifier, (entityChangedEventArgs.Entity.GetType())entityChangedEventArgs.Entity);
IEntityModifiedEventFactory<entityChangedEventArgs.Entity.GetType() > entityModifiedEventFactory = new EntityModifiedEventFactory<entityChangedEventArgs.Entity.GetType()> ((entityChangedEventArgs.Entity.GetType())entityChangedEventArgs.Entity, this.eventAggregator);
EntityModifiedEvent<entityChangedEventArgs.Entity.GetType()> entityModifiedEvent = entityModifiedEventFactory.Create();
entityModifiedEvent.Publish(eventArgs);
}
我应该如何编写特定类型来构建我的EntityModifiedEventFactory? . 我试过这个,entityChangedEventArgs.Entity.GetType()但我没有办法让它工作。
如果我离开TEntity的IEntityModifiedEventFactory<TEntity> entityModifiedEventFactory...将是一个EntityBase和我需要它是一个Animal或一个Tree类型的就像我说的继承EntityBas
慕斯王
相关分类