2015-09-25 4 views
1

У меня проблема с интерфейсом, расширяющим интерфейс. Давайте рассмотрим примеринтерфейс расширяет интерфейс для свойства

public interface IBaseClient 
{ 
    int PatientId { get; set; } 
    string PatientName { get; set; } 
} 

public interface IEchoClient2 : IBaseClient 
{ 
    string StudyInstanceUID{ get; set; } 
} 

Я реализую этот интерфейс IEchoClient2 в класс.

class RestClient2 : IEchoClient2 
{ 
    public string StudyInstanceUID 
    { 
     get; 
     set; 
    } 

    new public int PatientId 
    { 
     get; 
     set; 
    } 

    new public string PatientName 
    { 
     get; 
     set; 
    } 

    static void Main(string[] args) 
    { 
     IEchoClient2 client2 = new RestClient2(); 
     client2.PatientId = 1; 
     client2.PatientName = "XYZ"; 
     client2.StudyInstanceUID = "11"; 
     JsonSerializer objJsonSerializer = new JsonSerializer(); 
     objJsonSerializer.JsonConverter(client2); 
    } 

} 

public class JsonSerializer 
{ 
    public void JsonConverter(IEchoClient2 client2) 
    { 
     JsonRestService.JsonRESTClient client = new JsonRestService.JsonRESTClient(); 
    } 
} 

, но когда я прохожу объект интерфейса для JsonConverter(IEchoClient2 client2) метода, он отображает только IClient2 интерфейс свойства. Как я могу получить поддержку базового интерфейса так же, как и встроенный интерфейс.

enter image description here на этом изображении вы увидите, что только StudyInstanceUID показан не другие две опоры. Как я могу получить эти два опорных интерфейса.

+2

Почему вы делаете «новые публичные и т. Д.»?? –

+0

Где определение 'IEchoClient2'? – ekad

+0

Имутация просто показывает свойства 'ICilent2', потому что' client2' является экземпляром этого интерфейса. Если вы хотите получить доступ к другим свойствам, вы также можете просто перейти к этому интерфейсу. – HimBromBeere

ответ

1

Ваша проблема заключается в том, как работает отладчик. Свойства есть, но отладчик по умолчанию ограничивает ваш взгляд на объявленные свойства немедленного класса. Вам нужно развернуть «client2» в окне всплывающей подсказки переменной отладчика, чтобы увидеть другие базовые свойства.

Обратите внимание, что если бы вы написали какой-либо код в методе, который фактически использовался client, все свойства будут доступны напрямую (например, через Intellisense). Это просто отладчик, пытающийся не набрасывать на вас слишком много информации, которая заставляет свойства сразу не видны при отладке.