사용자 지정 차단 동작을 사용하여 레코드를 필터링합니다 (필터는 현재 사용자가 누구인지를 기반으로합니다). 그러나 난 약간의 어려움을 겪고 있습니다 (이것은 인터셉터 Invoke 메서드의 본문입니다)Unity 차단 - 사용자 지정 차단 동작
var companies = methodReturn.ReturnValue as IEnumerable<ICompanyId>;
List<string> filter = CompaniesVisibleToUser();
methodReturn.ReturnValue = companies.Where(company =>
filter.Contains(company.CompanyId)).ToList();
CompaniesVisibleToUser는 사용자가 볼 수있는 회사 ID의 문자열 목록을 제공합니다.
들어오는 데이터 - 회사 -이 문제는 회사 ID에서 데이터를 필터링하기 위해 ICompanyId를 구현해야하는 다양한 유형의 IList가 될 것입니다. 그러나 캐스팅 (IEnumerable)은 데이터를이 형식으로 반환하여 결과적으로 호출 스택의 문제를 일으키는 것으로 보입니다.
반환 유형을 변경하지 않고 필터를 수행하려면 어떻게해야합니까?
내가 얻을 예외는 유형의 객체 System.Collections.Generic.List 1[PTSM.Application.Dtos.ICompanyId]' to type 'System.Collections.Generic.IList
1 PTSM.Application.Dtos.EmployeeOverviewDto] '를 캐스팅 할 수
수 없습니다. 내가 변경하는 경우
높은 발신자는
public IList<ApplicationLayerDtos.EmployeeOverviewDto> GetEmployeesOverview() { return _appraisalService.GetEmployeesOverview(); }
있는 IEnumerable을 <EmployeeOverviewDto>
에
IEnumerable을 <ICompanyId>
이를 것으로 예상하지만, 분명히이 목록은 필터링 된 것으로 내가 원하는 아니므로 작동하는 것 항상 그런 유형의 것은 아닙니다.
'IEnumerable'에 대한 캐스트가 일부 변환 문제를 일으키는 것은 무엇을 의미합니까? 메모리 유형의 객체는 변경되지 않았습니다. –
Tejs
@David : 원래 반환 유형은 무엇입니까? –
@ Tees 자세한 내용을 포함하도록 질문을 편집했습니다 – David