IList<T>, IEnumerable<T> and ObservableCollection<T>
I have two classes defined like

    public class PostleitzahlList : ObservableCollection<Postleitzahl> {
    }

    public class Postleitzahl : IPostleitzahl {
    }

Now I have a Service-Class which contains  

    PostleitzahlList _postleitzahlList;

This Serviceclass has also to implement a Property of a Service-Interface which returns `_postleitzahlList` - but this Interface only knows `IPostleitzahl` - it doesn't know `PostleitzahlList` or `Postleitzahl`. this Property should be used for Binding in WPF.

I am trying now to declare and implement this Property. I have tried

        public ObservableCollection<IPostleitzahl> PostleitzahlList {
            get { return this._postleitzahlList; }
        }

and

        public IList<IPostleitzahl> PostleitzahlList {
            get { return this._postleitzahlList; }
        }

But both does not work.
The fallowing seems to work:

        public IEnumerable<IPostleitzahl> PostleitzahlList {
            get { return this._postleitzahlList; }
        }

I ask me now
1. why does the first and second try not working?
2. what is the best solution to solve this?
IList<T>, IEnumerable<T> and ObservableCollection<T>
===

I have two classes defined like

    public class PostleitzahlList : ObservableCollection<Postleitzahl> {
    }

    public class Postleitzahl : IPostleitzahl {
    }

Now I have a Service-Class which contains  

    PostleitzahlList _postleitzahlList;

This Serviceclass has also to implement a Property of a Service-Interface which returns `_postleitzahlList` - but this Interface only knows `IPostleitzahl` - it doesn't know `PostleitzahlList` or `Postleitzahl`. this Property should be used for Binding in WPF.

I am trying now to declare and implement this Property. I have tried

        public ObservableCollection<IPostleitzahl> PostleitzahlList {
            get { return this._postleitzahlList; }
        }

and

        public IList<IPostleitzahl> PostleitzahlList {
            get { return this._postleitzahlList; }
        }

But both does not work.
The fallowing seems to work:

        public IEnumerable<IPostleitzahl> PostleitzahlList {
            get { return this._postleitzahlList; }
        }

I ask me now
1. why does the first and second try not working?
2. what is the best solution to solve this?