【发布时间】:2015-01-16 18:12:46
【问题描述】:
我想使用接口或抽象类继承2个类中相同的一些属性;我不想在子类中声明变量。
可以这样做吗?
父类:
interface IError
{
DateTime GETDATE { get; set; }
string ERROR_NUMBER { get; set; }
string ERROR_SEVERITY { get; set; }
string ERROR_STATE { get; set; }
string ERROR_PROCEDURE { get; set; }
string ERROR_LINE { get; set; }
string ERROR_MESSAGE { get; set; }
}
孩子:
public class Business
{
public Business()
{
this.Id = -1;
this.Message = "";
}
public int Id { get; set; }
public string Message { get; set; }
}
另一个孩子:
public class DbTools
{
//Another Class
}
我需要这两个类的父属性,但是如果像下面这样更改代码,我应该使用另一个我不想使用的变量:
public class Business : IError
{
private DateTime m_GetDATE;//I don't want to declare another variable
public DateTime GETDATE
{
get { return m_GetDATE; }
set { GETDATE = m_GetDATE; }
}
}
【问题讨论】:
-
很不清楚你在问什么。也许是一个代码模拟了你不想做什么的想法,并更多地解释了你想做的事情。
-
@paqogomez ,我更改了我的代码,把它拿出来等待。
-
我已投票决定重新开放。到目前为止,它获得了 3 票,并且可能会找到其他人。至于你的问题。你没有用
m_GetDATE做任何特别的事情,为什么不直接使用auto-implemented property,比如public DateTime GETDATE{get;set;} public string ERROR_NUMBER{get;set;}?您可以对所有属性执行此操作,而无需任何支持字段。 -
我不想在两个子类中重复这个属性,我想在父类中声明这些属性,并从父类继承两个子类。
-
如果我理解正确,您需要一个基类
public class ErrorBase: IError来实现所有属性。然后您的子类public class Business: ErrorBase和public class DbTools:ErrorBase会从它继承,并会自动获取所有已实现的属性。
标签: c# inheritance properties