EIMI是一个显式的接口成员实现.所以代替:
public int SomeValue{get;}
你有
int SomeInterface.SomeValue {get;}
我正在考虑使用一个,因为我正在使用内部接口(解耦,但限制),我不想让实现对象上的方法出现在它的公共API中.
这是一个很好的用例吗?
一个很好的例子是.Net泛型集合类.
例如,显式地List
实现'IList'和IList
(非泛型接口).这意味着当您直接使用该类时,您将只看到专门的方法,而不是使用Object的方法.
假设您实例化了一个List
.如果IList是隐式实现的,那么你可以在类Add(Person item)和Add(Object item)上直接访问两个add方法,这将破坏泛型提供的类型安全性.调用list.Add("Foo")将编译得很好,因为将自动选择Add(Object)重载,并且泛型提供的类型安全性已经消失.