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 回答