using System;
namespace CSharp
{
public interface IValueInfo
{
int Value1Get { get; }
int Value2Get { get; }
}
/// <summary>
/// 正常接口实现
/// </summary>
public class NormalImpl : IValueInfo
{
public int Value1Get => 1;
public int Value2Get => 2;
}
/// <summary>
/// 显式接口实现
/// </summary>
public class ExplicitImpl : IValueInfo
{
// 不需要写public 因为显式接口实现属于接口,默认就是public的
int IValueInfo.Value1Get => 1;
// 不需要写public 因为显式接口实现属于接口,默认就是public的
int IValueInfo.Value2Get => 2;
}
class Program
{
static void Main()
{
NormalImpl n = new NormalImpl();
ExplicitImpl e = new ExplicitImpl();
Console.WriteLine($"Value1:{n.Value1Get}, Value2:{n.Value2Get}");
// Console.WriteLine($"Value1:{e.Value1Get}, Value2:{e.Value2Get}"); // Error !!!
// 必须要转换成 IValueInfo 才会调用到 接口成员
Console.WriteLine($"Value1:{((IValueInfo)e).Value1Get}, Value2:{((IValueInfo)e).Value2Get}");
Console.ReadLine();
}
}
}