次の暗黙の変換演算子があります。
public static implicit operator InputArgument<T>(T value)
{
return new InputArgument<T>(value);
}
以下は、ASP.NET MVC コントローラーのコードです。
これは機能します:
InputArgument<string> input = "Something";
これは機能します:
InputArgument<Controller> input = this;
これは機能します:
InputArgument<IPrincipal> input = new InputArgument<IPrincipal>(User);
しかし、これはうまくいきません:
InputArgument<IPrincipal> input = User;
最後の例では、次のエラーが表示されます。
> Cannot implicitly convert type
> 'System.Security.Principal.IPrincipal' to
> 'Engine.InputArgument<System.Security.Principal.IPrincipal>'. An
> explicit conversion exists (are you missing a cast?)
この暗黙的な変換が IPrincipal で機能しない理由は何でしょうか?