Поскольку вы уже знаете, что каждый сотрудник является персоной, вы можете просто использовать Enumerable.Cast для приведения элементов к нужному типу:
PersonsMeeting (Emp.Cast());
PersonsMeeting(new ObservableCollection<Person>(Emp.Cast<Person>()));
Но, скорее всего, это не даст ожидаемых результатов, поскольку вы действительно создаете новую коллекцию ObservableCollection, а не используете существующую.
Обновление 2
Я заметил, что метод PersonsMeeting является частным и что вы когда-либо вызываете его только с ObservableCollection<Employee>
.
Если это так, то вы пытаетесь использоватьненужная абстракция в вашем частном методе.Вы можете безопасно избавиться от этого и просто изменить PersonsMeeting
, чтобы получить ObservableCollection<Employee>
.
Другой вариант - изменить способ представления данных вашим классом.Если вы хотите сохранить абстракцию, сделайте так, чтобы ваш класс выглядел следующим образом:
public partial class MainWindow : Window
{
private ReadOnlyObservableCollection<Person> _readOnlyEmp = null;
private ObservableCollection<Person> _emp = new ObservableCollection<Person>;
public ReadOnlyObservableCollection<Person> Emp
{
if(_readOnlyEmp = null)
_readOnlyEmp = new ReadOnlyObservableCollection<Person>(_emp);
return _readOnlyEmp;
}
public void AddEmployee(Employee e)
{
_emp.Add(e);
}
public void RemoveEmployee(Employee e)
{
_emp.Remove(e);
}
}