Сценарий: я меняю статус «запроса», и иногда новый статус является временным и должен немедленно изменить его на другой статус. Итак, я в методе в моем базовом классе, WorkflowCommandBase:
public virtual Request Execute()
{
ChangeRequestStatus();
QueueEmails();
TrackRequestStatus();
return ExecuteAutoTransitionStatus(GetTransitionStatus());
}
Последняя строка пытается выполнить метод еще раз для нового состояния (из унаследованного класса namedType), но вызываемый мной метод не существует в namedType, он реализован здесь в базе. Это возможно сделать? Или мне нужно переопределить метод Execute в унаследованных классах, когда такая ситуация существует?
private Request ExecuteAutoTransitionStatus(string commandName)
{
if (String.IsNullOrEmpty(commandName))
{
return Request;
}
Type calledType = Type.GetType(commandName);
return (Request)calledType.InvokeMember(
"Execute",
BindingFlags.InvokeMethod
| BindingFlags.Public | BindingFlags.Instance,
null,
null,
new Object[]
{Request, TarsUser, GrantRepository, TrackingRepository});
}
Вот часть диаграммы классов, если это поможет.
.