В моем приложении Silverlight 4 есть следующий сценарий:
public class TheViewModel
{
[Import()]
public TheChild Child { get; set; }
}
[Export()]
public class TheChild
{
[ImportingConstructor()]
public TheChild(String myName, IAmTheService service) { ... }
}
[Export(typeof(IAmTheService))]
public class TheService : IAmTheService
{
public void DoSomething(String theName);
}
Как видите, для конструктора TheChild требуется один импортированный параметр и одно статическое значение, которое является контекстно-зависимым (должно быть предоставленородитель).Строковое значение не может быть получено из AppSettings, конфигурации и т. Д. И может быть предоставлено только текущим экземпляром родительского класса (в данном случае TheViewModel).
Как правило, я всегдаПодход к внедрению зависимостей выполняется следующим образом:
- Требуемые зависимости удовлетворяются путем внедрения в конструктор
- Необязательные зависимости выполняются путем внедрения свойства
Параметр "myName"требуется, поэтому я бы предпочел установить его через конструктор, но, учитывая работу MEF, я понимаю, что это, возможно, придется изменить.
Можете ли вы рассказать мне, как вы справились с этим сценарием, и ваши мысли, лежащие в основе решения