```
Interface A
    {
      string x {get;set;}
      IEnumarable<InterfaceB> DetailList { get; set; }
    }
    Interface B
    {
     int z;
     int y;
    }

    Class B :Interface B
    {
      implements z;
      implements y;
    }
    Class A :Interface A
    {
      implements x;
      IEnumarable<ClassB> DetailList {get;set;} // This line is giving trouble.
    }

```

Is this code violating OO concept. I thought if I derive ClassB from InterfaceB then I can use ClassB in my ClassA instead of InterfaceB. VS is not liking this, Its asking me to use InterfaceB instead of ClassB in ClassA. 
Is there any other way to go about doing this. 

I am willing to consider alternate designing options, I have some domain objects whose properties are defined by Interface A and each domain object would have corresponding object defined by interface B
e.g
concert(A) concertlocations(B)
comedyshow(A) comedyshowlocations(B)

Feel free to ask more questions if you think I am not being clear enough.  

Thanks in Advance