나는 비슷한 질문을 많이했지만 이후에 나는 꽤 답을 찾지 못했습니다. 내 문제의 일부는 속성에서 제네릭을 사용할 수 없기 때문입니다.IList <variableType>; 제너릭없이 해결
나는 아마도 너무 복잡하게하려고 노력하고있다. 그래서 당신이 이것을하는 더 쉬운 방법을 생각할 수 있다면 나는 모두 귀이다.
내 특정 문제는 ASP.NET MVC와 관련이 있으며 동작 메서드에서 특성 (필터)을 사용하고 있습니다. 나는이 같은 ViewData.Model에 전달 된 결과 페이지를 매기는 것이다 필터를 만들려고 해요 :
[PagedList(PageSize = 2, ListType = typeof(Invoice))]
public ViewResult List()
{
var invoices = invoicesRepository.Invoices; // Returns an IQueryable<Invoice>
return View(Invoices);
}
내 필터의 처럼 재정의 다음 보이는 OnActionExecuted : 나는 내가 할 수있는 실현
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
ViewResult result = (ViewResult)filterContext.Result;
var list = (IQueryable<?>)result.ViewData.Model; // Here I want to use the ListType in place of the ?
// Perform pagination
result.ViewData.Model = list.Skip((Page - 1) * PageSize).Take(PageSize.ToList();
}
대체 내
var list = (IQueryable<?>)result.ViewData.Model;
으로
var list = (IQueryable)result.ViewData.Model;
IQueryable<Object> oList = list.Cast<Object>();
하지만 내보기는 강하게 당신이 잠재적으로 당신이 다음 내에서해야 할 일을 수행하는 필터의 일반적인 방법을 만들 수있는
IQueryable<Invoice>
아닌
IQueryable<Object>
필자는 여전히 형식을 어떻게 든 전달해야하며 이는 내가 붙어있는 부분입니다. Type type = typeof (Invoice); //이 속성을 속성으로 전달할 수 있습니다. myNewMethod(); // 그러나 나는 이것을 할 수 없다? –
jeef3
일부 예제 코드로 응답을 편집했습니다. – Tinister
예, 완벽합니다. – jeef3