Objects is declared as a IEnumerable. Although you initialize it with a List<> to the compiler it still is an IEnumerable.
You can fix it in your code for the provided example:
protected override void LoadObjects()
{
var list = new List<PublicationObject>();
list.Add(new PublicationObject("Example"));
this.Objects = list;
}
The clients outside of the class will not know that the property is a concrete list and will not be able to use the methods of List<> unless casted to List<>
ObjectCollection oc = ...
((List<<PublicationObject>) oc.Objects).Add(...);
Since you named the class as A collection, I doubt that you want to allow clients appending items to the list directly. I dedicated method Add() is the way to go here. Perhaps not obvious for now, but will safe you in the future :-)
Naming suggests that is a collection so it would be even better to make your ObjectCollection implement ICollection
. Due to naming future users of your class expect Collection conventions.