Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中使用IList将父对象类型转换为子对象#_C#_List_Run Time Polymorphism - Fatal编程技术网

C# 如何在C中使用IList将父对象类型转换为子对象#

C# 如何在C中使用IList将父对象类型转换为子对象#,c#,list,run-time-polymorphism,C#,List,Run Time Polymorphism,下面是我在C#Net中的DTO 公共类电影 { 公共int Id{get;set;} 公共IEnumerable博客{get;set;} } 公共类博客 { 公共int Id{get;set;} } 公共类BlogCat1:Blog { 公共字符串SomeProp1{get;set;} } 公共类BlogCat2:Blog { 公共字符串SomeProp2{get;set;} } 现在,当我使用IEnumerable的子实体初始化博客时,不需要任何错误或显式转换。 i、 e movieObj.

下面是我在C#Net中的DTO

公共类电影
{
公共int Id{get;set;}
公共IEnumerable博客{get;set;}
}
公共类博客
{
公共int Id{get;set;}
}
公共类BlogCat1:Blog
{
公共字符串SomeProp1{get;set;}
}
公共类BlogCat2:Blog
{
公共字符串SomeProp2{get;set;}
}
现在,当我使用IEnumerable的子实体初始化博客时,不需要任何错误或显式转换。 i、 e

movieObj.Blogs=new List();//好的,没有错误
movieObj.Blogs=新列表();//好的,没有错误
但出于某种原因,我需要使用IList而不是IEnumerable作为

 public IList<Blog> Blogs {get; set;}
public IList博客{get;set;}
但当更新so&时,尝试使用子实体分配

movieObj.Blogs = new List<BlogCat1>(); // error CompileTime Error

movieObj.Blogs = (Ilist<BlogCat1)new List<BlogCat1>(); // error 
movieObj.Blogs=new List();//错误编译时间错误

movieObj.Blogs=(Ilist
IEnumerable
是,而Ilist不是。也许可以给你一些灵感。想象一下,如果你要movieObj.Blogs=new List();movieObj.Blogs.Add(new BlogCat2());应该发生什么?@RichardFriend有道理。谢谢!
IEnumerable
是,而IList不是。也许可以给你一些灵感。想象一下,如果你将movieObj.Blogs=new List();movieObj.Blogs.Add(new BlogCat2());应该发生什么?@RichardFriend有道理。谢谢!
 public IList<Blog> Blogs {get; set;}
movieObj.Blogs = new List<BlogCat1>(); // error CompileTime Error

movieObj.Blogs = (Ilist<BlogCat1)new List<BlogCat1>(); // error