我有一个像这样的基类:
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个单独的方法来设置错误信息了?
答案 0 :(得分:2)
public T GetError<T>(T obj) where T: BaseResponse
{
obj.ErrorMessage= string.Format("Err msg related to {0}", typeof(T).Name);
return obj;
}
我不知道错误消息是这个通用的东西还是自定义的东西。如果是,则将消息作为参数传递。
为什么需要一种方法?是因为你简化了问题吗?
答案 1 :(得分: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();
}
答案 2 :(得分:1)
您应该能够拥有如下通用方法:
public object GetError(BaseResponse response)
{
response.ErrorMessage = "whatever";
return response;
}
答案 3 :(得分: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";}}
}
以及其他人......