私のモデルには次のものがあります。
public sealed class OAuthProvider
{
private readonly string name;
private const string SOME_PROVIDER = "SOMEPROVIDER";
public static readonly OAuthProvider SomeProvider = new OAuthProvider(SOME_PROVIDER);
private OAuthProvider(String name) { this.name = name; }
public override String ToString(){ return name; }
public static implicit operator string(OAuthProvider oAuthProvider)
{
return oAuthProvider.name;
}
public static implicit operator OAuthProvider(string oAuthProvider)
{
switch (oAuthProvider)
{
case SOME_PROVIDER : return SomeProvider ;
default: return null;
}
}
}
そして、これは私のOAuth
コントローラーで:
public ActionResult Profile(OAuthProvider network)
{...}
そして、これは私の見解では:
@model SomeModel
Html.RenderAction("Profile", "OAuth", new { network = Model.Network });
はどこModel.Network
ですかstring
このビューがレンダリングされると、(ブレークポイントを介して) null ではないModel.Network
として入ってくることがわかります。string
MyProfile(OAuthProvider)
が呼び出されていますが、暗黙的な型変換が行われているにもかかわらず、network
入ってきています。null
私はこれについて間違った方法で進んでいますか?明示的なキャストを行う必要がありますか?