簡體   English   中英

將對象轉換為繼承的對象

[英]Convert Object to Inherited Object

我正在開發一個類似於Netflix的程序,涉及電影。

我有一個來自我的程序使用的API的Movie Object / class。 我像這樣創建了一個Object的繼承類。

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獲取Movie對象的代碼。

        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 Movie轉換為MyMovie對象。 但它不起作用。 在這種情況下我該怎么辦?

{"Unable to cast object of type 'TMDbLib.Objects.Movies.Movie' to type 'Movie_Management.DATA.MyMovie'."}

您不能在繼承層次結構中“向后”投射。 你只能從電影到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);

希望這些代碼有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM