For the serializer to interpret your contract they need to be expressed in terms of concrete types rather than interfaces. If you change your code to this (and annotate class B with the appropriate DataContract
and DataMember
attributes, you should be good to go.
[DataContract]
public class A
{
[DataMember]
public List<B> ListOfB { get; set; }
}