Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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# - Fatal编程技术网

C# 将对象转换为继承的对象

C# 将对象转换为继承的对象,c#,C#,我正在做一个类似于Netflix的项目,涉及电影 我的程序使用的API中有一个电影对象/类。我像这样为那个对象创建了一个继承类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using TMDbLib.Objects.Movies; namespace Movie_Management.DATA { cl

我正在做一个类似于Netflix的项目,涉及电影

我的程序使用的API中有一个电影对象/类。我像这样为那个对象创建了一个继承类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TMDbLib.Objects.Movies;
namespace Movie_Management.DATA
{
    class MyMovie: TMDbLib.Objects.Movies.Movie
    {
        public string Path { get; set; }
    }
}
下面是我从使用的API中获取电影对象的代码

        TMDbLib.Objects.Movies.Movie movie = new TMDbLib.Objects.Movies.Movie();
        movie = MovieProcesses.loadTMDbLib(justMovieName);
        MyMovie myMovie = (MyMovie)movie;
        myMovie.Path = path;

        Cacher cache = new Cacher();
        cache.CacheVideo(myMovie);
我尝试将TMDbLib电影强制转换为MyMovie对象。但它不起作用。在这种情况下我该怎么办

{"Unable to cast object of type 'TMDbLib.Objects.Movies.Movie' to type 'Movie_Management.DATA.MyMovie'."}
不能在继承层次结构中“向后”强制转换。你只能从一部电影转到另一部电影,而不能从另一部电影转到另一部电影

如果要向现有的Movie对象添加额外内容,请向MyMovie添加一个构造函数,该构造函数将Movie对象作为参数,并手动复制成员变量

    TMDbLib.Objects.Movies.Movie movie = new MyMovie();
    movie = MovieProcesses.loadTMDbLib(justMovieName);
    MyMovie myMovie = movie as MyMovie;
    myMovie.Path = path;

    Cacher cache = new Cacher();
    cache.CacheVideo(myMovie);

希望这些代码有帮助

好吧,你可以倒着投,这叫做倒投。这就是OP有运行时错误的原因-他可以施放,但施放是错误的。@Illumina,如果类型
Movie
的引用指向
MyMovie
对象或其后代(您没有),则可以将
Movie
施放到
MyMovie
上。对象引用未设置为对象的实例。对于myMovie.Path=Path;请注意“TMDbLib.Objects.Movies.Movie Movie=new MyMovie();”