0

私はこのような基本クラスを持っています:

public class BaseResponse
{
  public string ErrorMessage { set;get;}
}

そして、これを継承するいくつかの子クラス:

public class Person:BaseResponse
{
  public string FirstNAme { set;get;}
}

public class Phone:BaseResponse
{
  public string SerialNumber { set;get;}
}

public class Car :BaseResponse
{
  public string Year{ set;get;}
}

次にErrorMessage、このクラスの各インスタンスのプロパティを異なる値に設定します。現在、これは私がしていることです:

public Phone GetPhoneError(Phone objPhone)
{
  objPhone.ErrorMessage="Err msg related to Phone";
  return objPhone;
}

public Person GetPersonError(Person objPerson )
{
  objPerson .ErrorMessage="Err msg related to Person";
  return objPerson ;
}

... another similar method for Car also

エラーメッセージを設定するために3つの別々のメソッドを必要としないように、このメソッドを汎用形式にする方法はありますか?

4

4 に答える 4

2
public T GetError<T>(T obj) where T: BaseResponse
{
  obj.ErrorMessage= string.Format("Err msg related to {0}", typeof(T).Name);
  return obj;
}

エラーメッセージがこの一般的なものなのか、カスタムのものなのかわかりません。その場合は、メッセージを引数として渡します。

なぜこれにメソッドが必要なのですか?質問を単純化したからですか?

于 2012-06-18T15:53:38.723 に答える
2

したがって、基本クラスでは、SetError という仮想メソッドを作成する必要があります (GetError ですが、正しい表記法を使用します)。

public abstract string GetErrorMessage(); //In Base Class so that why each implementation will set the correct error message

次に、基本クラスで-変更しているのと同じオブジェクトを返す必要があるのはなぜですか?

public virtual void SetErrorMessage()
{
   this.ErrorMessage = GetErrorMessage();
}
于 2012-06-18T15:54:26.477 に答える
1

次のような一般的なメソッドを使用できるはずです。

public object GetError(BaseResponse response)
{
   response.ErrorMessage = "whatever";
   return response;
}
于 2012-06-18T15:49:51.453 に答える
1

その場合、プロパティvirtualを作成して不要にするのはなぜsetですか?:

public class BaseResponse
{
  public virtual string ErrorMessage { get;}
}


public class Person:BaseResponse
{
  .....
  public override string ErrorMessage {get { return "Err msg related to Person";}}
}


public class Phone:BaseResponse
{
  ......
  public override string ErrorMessage {get { return "Err msg related to Phone";}}
}

他の人のために....

于 2012-06-18T15:56:23.010 に答える