2016-04-22 7 views
3

Visual StudioのControllerF12(Go To Definition)を押すと、抽象基本クラスが表示されます。ControllerはGitHubではControllerBaseを継承しますが、VSでは継承しないのはなぜですか?

public abstract class Controller : IActionFilter, IFilterMetadata, IAsyncActionFilter, IDisposable 

しかし、Controller.cs on GitHubを参照するとき。それはControllerBaseから継承していることを示しています。

public abstract class Controller : ControllerBase, IActionFilter, IAsyncActionFilter, IDisposable 

なぜですか?

私は混乱しています。また、HomeControllerControllerから継承していますので、から継承することはできますが、C#では多重継承をサポートしていません。

+0

ControllerはControllerBaseクラスを継承しています。class restはインターフェイスです。 – brykneval

+0

@brykneval、yesですが、 'HomeController'は' BaseController'から継承する'Controller'から継承します。しかし多分それは多重継承ではないのでしょうか? – Fred

答えて

3

2つは異なる時点からのものです。たとえば、GitHubにリンクしたファイルは、現在のバージョンのファイルです。Devブランチからのものです。おそらくあなたは、現在のdevの枝からコードを実行していない以上

dev branch

そして、もっと。

リンクしたファイルのGitHubの履歴ボタンをクリックすると、ファイルの改訂履歴が表示されます。

Revision history

私は<>各リビジョンためのボタンであるが非一致で実行しているコードのバージョンをクリックして、このファイルのさまざまなバージョンをチェックします。このファイルのリビジョン履歴は、2016年1月22日にしか戻っていないことがわかりました。その前に、コントローラコードは別のファイルで定義されていなければなりませんでした。または、何らかの理由でリビジョン履歴が失われました(おそらくMVC 6からCore MVC 1.0へ)。

RC1のコードを実行している可能性があります。 GitHub上のController.csのバージョンは、あなたが見ているものとよりよく一致します:https://github.com/aspnet/Mvc/blob/6.0.0-rc1/src/Microsoft.AspNet.Mvc.ViewFeatures/Controller.csコードの正しいバージョンであれば完璧に一致するはずですが、まだ少し違いがあります。それはControllerBaseから継承しないという意味で一致します。多重継承に関しても

rc1 version of the code

。 HomeControllerがControllerから継承し、ControllerがControllerBaseを継承していますが、これは多重継承ではありません。複数の継承は、ControllerBaseがあって、SomethingElseクラスとコントローラがコントローラ定義のこれらのクラスの両方から継承したとしましょう。 C#がこれをサポートしていないということは間違いありません。

関連する問題