2012-03-28 6 views
0

MemberShipProviderクラスのメソッドをオーバーライドして自分の "CreateUser"を作成しようとしています。問題は、CreateUserがMembershipUserデータ型であり、MembershipUserを返すことに興味がないことです。ユーザーが作成されたかどうかを知りたいのは、boolを返すことだけです。どのように私は最良の方法でそれを達成することができますか?カスタムMemberShipプロバイダ、Create Userをオーバーライドします。

public override MembershipUser CreateUser(string name, string email) 
    { 
     User u = new User 
     { 
      Email = email, 
      Name = name 
     }; 
     gdb.Users.InsertOnSubmit(u); 
     try 
     { 
      gdb.SubmitChanges(); 
      MailSender.NewMember("hej hopp"); 
     } 
     catch 
     { 
      return false; 
     } 
    } 

答えて

0

カスタムメンバーシッププロバイダを作成するときは、基本クラスで定義されたメソッドのシグネチャを尊重する必要があります。したがって、MembershipUserのインスタンスを返す必要があります。アプリケーションでCreateUserメソッドの戻り値で何もしない場合は、nullを返すか、MembershipUserというインスタンスを返します。コンストラクタで使用する必要のあるフィールドだけを設定します。

+0

これは、ユーザーを初めて登録するときに、MembershipUserのコンストラクタにデータを格納するのに十分な情報がないため、MemreshipUserオブジェクトを返すことができません。 –

+0

それからあなたが持っている情報だけを使用してください。 IIRCでは、MembershipUserコンストラクタの引数は、ほとんどの場合オプションです。 –