基本クラス User ant 2 継承クラス - Employee と ExtEmployee があります。
class User { ... }
class Employee : User { ... }
class ExtEmployee : User { ... }
たとえば、GetUsers() と GetUsers2() の 2 つのメソッドがあります。GetUsers() はすべてのユーザーを返します。GetUsers2() にはフィルターがあり、currentOrganization からユーザーを返します。
public User[] GetUsers()
{
Employee[] list1 = GetEmployees();
ExtEmployee[] list2 = GetExtEmployees(); // empty list
var list = list1.OfType<User>().Union(list2).ToArray();
return list;
}
public User[] GetUsers2()
{
Employee[] list1 = GetEmployees();
ExtEmployee[] list2 = GetExtEmployees(); // empty list
var list = list1.OfType<User>().Union(list2).ToArray();
list = list.Where(u => u.OrganizationId == _currentOrganizationId).ToArray();
returt list;
}
public void Main()
{
var employees = GetUsers() as Employee[]; // works fine
var employees2 = GetUsers2() as Employee[]; // employee2 == null
}
メソッド GetUsers2() の結果を Employee[] にキャストできません - null 値を取得します。なんで?