Если конечной целью является использование этого с внедрением зависимости, что плохого в том, чтобы вводить их друг в друга вместо вложения?
public interface ICountry
{
ICountryInfo Info { get; }
}
public interface ICountryInfo
{
int Population { get; set; }
string Note { get; set; }
}
и реализовать как:
public class Country : ICountry
{
private readonly ICountryInfo _countryInfo;
public Country(ICountryInfo countryInfo)
{
_countryInfo = countryInfo;
}
public ICountryInfo Info
{
get { return _countryInfo; }
}
}
public class CountryInfo : ICountryInfo
{
public int Population { get; set; }
public string Note { get; set;}
}
Затем, после того как вы настроите свои привязки для ICountry & ICountryInfo, CountryInfo будет внедрять в страну всякий раз, когда вводится страна.
Затем вы можете ограничить привязку, если хотите, чтобы внедрить CountryInfo только в Country и больше нигде. Пример в Ninject:
Bind<ICountry>().To<Country>();
Bind<ICountryInfo>().To<CountryInfo>().WhenInjectedInto<Country>();