I want to filter a list inside a class that implemented some interface.
Here is my codes:
public interface IChild
{
public string Nth { get; set; }
}
public interface IChild<T> : IChild
{
public T Parent { get; set; }
}
public class TeacherChilren : IChild<Teacher>
{
public Teacher Parent { get; set; }
public string Nth { get; set; }
}
public interface Parent
{
public string Name { get; set; }
}
public interface ChildOwner<T> : Parent where T : IChild
{
public List<T> Children { get; set; }
}
public class Teacher : ChildOwner<TeacherChilren>
{
public string Name { get; set; }
public List<TeacherChilren> Children { get; set; }
}
var list = new List<Teacher>{
new Teacher()
};
Console.WriteLine(new Teacher() is ChildOwner<IChild>);
Console.WriteLine(list is List<ChildOwner<IChild>>);
I want to cast the list but the output is false.
Why output is false?
My design is wrong?
what is the solution?