After reviewing JsonConfigurationProvider and ConfigurationBinder, that are used when building settings from a JSON file, they do not support interface types. This is for all .NET framework interfaces (IList, IDictionary, etc) and custom application interfaces, for example in this case IBucketConfiguration. While it would be possible to build our own CouchbaseConfigurationBinder that could be provided with a mapping of interfaces to class implementations, it does feel like a lot of work for not so much reward.
What do you think Jeff Morris?
PS I've provided a Gerrit commit to add an explicit test that demonstrates our current implementation works as expected. If the Buckets property on CouchbaseClientDefinition was changed to List<IBucketDefinition>, the test will fail.
Commit was reverted, it breaks the JSON configuration tests. The reason appears to be that Bind() does not honor binding to interface fields; you need a concrete implementation as a field value to map a JSON element.