什么是EIMI的好用例?

Qui*_*ome 1 .net c# interface

EIMI是一个显式的接口成员实现.所以代替:

public int SomeValue{get;}
Run Code Online (Sandbox Code Playgroud)

你有

int SomeInterface.SomeValue {get;}
Run Code Online (Sandbox Code Playgroud)

我正在考虑使用一个,因为我正在使用内部接口(解耦,但限制),我不想让实现对象上的方法出现在它的公共API中.

这是一个很好的用例吗?

Pop*_*lin 7

一个很好的例子是.Net泛型集合类.

例如,显式地List<T>实现'IList'和IList(非泛型接口).这意味着当您直接使用该类时,您将只看到专门的方法,而不是使用Object的方法.

假设您实例化了一个List<Person>.如果IList是隐式实现的,那么你可以在类Add(Person item)和Add(Object item)上直接访问两个add方法,这将破坏泛型提供的类型安全性.调用list.Add("Foo")将编译得很好,因为将自动选择Add(Object)重载,并且泛型提供的类型安全性已经消失.