РЕДАКТИРОВАТЬ : Этот вопрос был бы недействительным в .NET 4, поскольку он на самом деле работает как нужно.
У меня есть класс данных, который должен реализовывать такой интерфейс:
public interface IData
{
IEnumberable<IOther> OtherList { get; }
IOther AddOther();
void RemoveOtherData(IOther data);
}
Но я застрял с объявлением фактического члена в Data
public class Data : IData
{
// desired, always return the same reference
public IEnumberable<IOther> OtherList { get { return _mOtherList } }
// Non persistent reference not desirable.
public IEnumerable<IOther> OtherList { get { return _mOtherList.Select(x => x as IOther); } }
List<IOther> _mOtherList = new List<Other>(); // error, type mismatch
List<Other> _mOtherList = new List<Other>(); // error, property return type mismatch
IEnumerable<IOther> _mOtherList = new List<Other>(); // ok, but cannot use List methods without casting.
}
Каково было бы лучшее решение в этом случае?