이것은 제네릭과 표현식에 대한 이해가 거의 부족한 것으로 확신하지만 일단 커밋 상태에 있으면 BackgroundJob.Enqueue를 호출하기 위해 Expression<Action<T>>
목록을 작성하려고합니다.Hangfire 및 작업 단위
작업을 대기열에 넣을 수있는 코드 영역이 여러 개 있지만 코드의 다른 섹션, 특히 db에 저장 될 때까지 작업을 실제로 실행해야하는지 여부는 알 수 없습니다.
T가 분명히 다른 경우 List<Expression<Action<T>>>
을 생성하고 준비가되면이를 BackgroundJob.Enqueue로 전달하는 것으로 어려움을 겪고 있습니다. 나는 다른 방법의 숫자를 시도
public class HangfireQueue
{
private readonly IList<Expression<Action<object>>> _queuedItems;
public HangfireQueue()
{
_queuedItems = new List<Expression<Action<object>>>();
}
public virtual void EnqueueTask<T>(Expression<Action<T>> methodCall)
{
_queuedItems.Add(methodCall);
}
public void CommitUnitOfWork()
{
foreach (var item in _queuedItems)
{
BackgroundJob.Enqueue((Expression<Action>) item);
}
}
}
이 때때로 Expression<Action<T>>
Expression<Action>
에이 부분이 될 것 캐스팅 할 수 없습니다 내가 컴파일에 도착하고 런타임에 그것을 좋아하지 않는의 최신 시도 될 일이 methodCall이리스트에서 받아 들여지지 않을 것임을 언급 할 필요는 없다.
당신이 몇 가지 예제를 가지고 있나요 당신이 겪고있는 이슈를 요약 한 코드? – Tom