Как мне InvokeMember в унаследованном классе, который реализован только в базеC#

Место общения программистов C#
Anonymous
Как мне InvokeMember в унаследованном классе, который реализован только в базе

Сообщение Anonymous »

Сценарий таков: я меняю статус «запроса», и иногда новый статус является временным и его необходимо немедленно изменить на другой статус. Итак, я нахожусь в методе моего базового класса WorkflowCommandBase:

Код: Выделить всё

    public virtual Request Execute()
{
ChangeRequestStatus();
QueueEmails();
TrackRequestStatus();
return ExecuteAutoTransitionStatus(GetTransitionStatus());
}
Последняя строка пытается снова выполнить метод для нового статуса (из унаследованного класса callType), но метод, который я вызываю, не существует в callType, это реализовано здесь, в базе. Возможно ли это сделать? Или мне нужно переопределить метод 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});
}
Вот часть диаграммы классов, если это поможет.


.

Подробнее здесь: https://stackoverflow.com/questions/101 ... ed-in-base

Вернуться в «C#»