В некоторых случаях необходимо предоставить явную реализацию, например, при реализации IEnumerable и IEnumerable <>, когда оба интерфейса предоставляют метод GetEnumerator
.
Одно общее правило, которому я следую, - если я реализую интерфейс, но предоставлю дополнительные более удобные и безопасные для типов методы и свойства для раскрытия функциональности интерфейса, я бы явно реализовал интерфейс. Это делает общедоступный интерфейс, который класс предоставляет более подходящим, при этом позволяя алгоритмам, которые могут полагаться на реализованный интерфейс, получать доступ к интерфейсным методам и свойствам.
Это было трудно сказать, но я надеюсь, что это имеет смысл.