Исключение MEF в Windows 7 - PullRequest
       2

Исключение MEF в Windows 7

0 голосов
/ 17 декабря 2010

Я разработал приложение, которое использует MEF для получения всех доступных пользовательских элементов управления для отображения в форме.Пользовательские элементы управления и форма находятся в одной сборке.Это все работает нормально, когда я запускаю exe из XP, но выдает исключение при использовании Windows 7.Есть ли какие-либо предложения для решения этой проблемы.

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

Мое первое предложение - показать ваш метод композиции и несколько примеров кода.В противном случае я бы исключил все нагрузки, кроме одной UserControl.Начните оттуда.Убедитесь, что вы:

[Export(typeof(IUserControl))]
public class myUserControl : UserControl, IUserControl
{ 
    ... 
    /*
     * control to be exported:
     * note: you can forego IUserControl and just use UserControl
     *       but make sure you do so throughout the import and
     *       export attributes.
     */
    ... 
}

... а затем в приложении Host :

[ImportMany(typeof(IUserControl))]
IEnumerable<IUserControl> UserControls {get;}

Я использую здесь IEnumerable в качестве примера, потому что выожидая загрузки нескольких пользовательских элементов управления.Я предполагаю, что вы будете загружать элементы управления для отображения сразу.В противном случае, если вы не хотите их всех сразу, а вместо этого по требованию , я бы все равно перечислил так:

[ImportMany(typeof(IUserControl))]
IEnumerable<Lazy<IUserControl>> UserControls {get;}

Таким образом, вы можете выполнить итерацию, проверить UserControls[index].Valueдля нуля.

Без дополнительной информации, это действительно лучшее, что я могу сделать для вас.

0 голосов
/ 18 декабря 2010

Привет,

Я разобрался с этим.Я использовал Log4Net в приложении, и по некоторым странным причинам приложение установки для Winforms не получало файл log4not xml.Этого не хватало в установленной версии, и это было причиной ошибки приложения.

Спасибо за ваши ответы.

...