Пойдите сюда:
Tools > Options > Text Editor > C# > Formatting > Indentation > Indent case labels
Вы можете повторно объявить его (или, скорее, сообщить компилятору, что вы намереваетесь скрыть его):
public interface IChangeable : IBasic
{
new int Data { set; }
}
class Foo : IChangeable
{
private int value;
int IBasic.Data { get { return value; } }
int IChangeable.Data { set {this.value = value;} }
}
Но это сбивает с толку, и вам понадобится использовать явные реализации и т. д., и, возможно, немного приведения к вызывающему, если вы хотите использовать скрытую версию. Если вы пошли по этому пути, я бы порекомендовал раскрыть как get
, так и set
на IChangeable
:
public interface IChangeable : IBasic
{
new int Data { get; set; }
}
class Foo : IChangeable
{
private int value;
int IBasic.Data { get { return value; } }
int IChangeable.Data { set { this.value = value; } get {return value; } }
}
Re в комментариях; для раскрытия в реализующем типе:
public interface IChangeable : IBasic
{
new int Data { set; }
}
public interface IBasic
{
int Data { get; }
}
class Foo : IChangeable
{
private int data;
public int Data {
get { return data; }
set { data = value; }
}
}
Это также будет работать, если вы сделаете это (что я предпочитаю):
public interface IChangeable : IBasic
{
new int Data { get; set; }
}
Возможно, я неправильно понял ваш вопрос, но не могли бы вы просто сделать
public interface IChangeable : IBasic
{
int Data { get; set; }
}
т.е. позволить IChangeable переопределить свойство, но сохранить "get".
Поскольку IChangeable наследуется от IBasic, я предполагаю, что вам нужна реализация из IChangeable иметь реализацию get.
Я думаю, что методы GetData и SetData более понятны для этой ситуации:
public interface IBasic
{
int GetData();
}
public interface IChangeable : IBasic
{
void SetData(int data)
}