Two constraints to design around
The model builder refuses anything ambiguous. It checks these two rules when it builds the model, so you find out at startup:
- Two parent interfaces may not declare the same property name. If
ILocatableandITaggedboth declaredCountryCode, any type implementing both would fail to build. Keep facets disjoint, or move the shared member into a base interface that both extend. - A property cannot be declared again further down. It is defined once, on the type that first
declares it. To change some of its attributes for a derived type, use
[PropertyOverride](§3.1).