2015-07-10 33 views
-1

是否有可能以某种方式覆盖BaseClass中的属性。我想要做的是以下。也许我应该在子类中使用另一个属性名称。通过实现其接口c覆盖baseClass中的属性#

public interface IRow 
{ 
    int Id { get; set; } 
} 

public class MySpecificRow : IRow 
{ 
    public int Id { get; set; } 
    public int SomethingSpecific { get; set; } 
} 

public class BaseClass 
{ 
    protected IRow Row; 

    public BaseClass(IRow row) 
    { 
     Row = row; 
    } 
} 

public class SubClass : BaseClass 
{ 
    public SubClass(IRow row) : base(row) { } 
    private MySpecificRow Row { get { return (MySpecificRow) base.Row; } } 
} 

最后一行抛出我隐藏基类Row属性的错误。

回答

1

要回答您的具体问题,我相信您可以使用“新”关键字。见https://msdn.microsoft.com/en-us/library/ms173153.aspx

这就是说,这通常不是一个好主意。我不知道你的代码是否只是一个简单的例子,或者你是否有额外的限制。

+0

是的,代码是一个简化的例子。我想隐藏基类属性,因为接口只公开一些属性。为什么这通常不是一个好主意? – ekenman