C#语言用显式实现“隐藏”成员
示例
当接口污染了你的类,并且有太多你根本不关心的成员时,你不讨厌吗?我有办法了!显式实现
public interface IMessageService {
void OnMessageRecieve();
void SendMessage();
string Result { get; set; }
int Encoding { get; set; }
// code
}通常,您将实现此类。
public class MyObjectWithMessages : IMessageService {
public void OnMessageRecieve(){
}
public void SendMessage(){
}
public string Result { get; set; }
public int Encoding { get; set; }
}每个成员都是公开的。
var obj = new MyObjectWithMessages(); // 我为什么要调用此功能? obj.OnMessageRecieve();
答:不。因此,既不应将其声明为public,而只是将成员声明为private会使编译器抛出错误
解决方案是使用显式实现:
public class MyObjectWithMessages : IMessageService{
void IMessageService.OnMessageRecieve() {
}
void IMessageService.SendMessage() {
}
stringIMessageService.Result{ get; set; }
intIMessageService.Encoding{ get; set; }
}因此,现在您已经根据需要实现了成员,并且它们不会公开公开任何成员。
var obj = new MyObjectWithMessages(); /* error member does not exist on type MyObjectWithMessages. * We've succesfully made it "private" */ obj.OnMessageRecieve();
如果您仍然认真地希望访问成员,即使已显式实现该对象,则只需将对象强制转换为接口即可。
((IMessageService)obj).OnMessageRecieve();
热门推荐
7 简短的二胎祝福语
10 简短霸气女儿生日 祝福语
11 祝福语高考小众诗句简短
12 元旦祝福语20秒简短
13 老师过年祝福语大全 简短
14 一生祝福语简短
15 产检祝福语简短霸气
16 朋友店开张祝福语简短
17 生日爱情祝福语大全简短
18 朋友女儿生日祝福语 简短