C# 将对象转换为继承的对象
我正在做一个类似于Netflix的项目,涉及电影 我的程序使用的API中有一个电影对象/类。我像这样为那个对象创建了一个继承类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
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();”