2015-09-25 156 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

immage只显示'ICilent2'的属性,因为'client2'是该接口的一个实例。如果你想访问其他属性,你也可以简单地转换到该接口。 – HimBromBeere

回答

1

您的担心只是调试器的工作原理。属性在那里,但调试器默认情况下将视图限制为直接类的声明属性。您需要在调试器的变量值工具提示窗口中展开“client2”以查看其他基本属性。

请注意,如果您在实际使用client的方法中编写了任何代码,则所有属性都将直接可用(例如通过Intellisense)。只是调试器不会用太多的信息来轰击你,这会导致属性在调试时不能立即显示。