VS2010: Как избежать проблем с конструктором Windows Forms при работе с унаследованными пользовательскими элементами управления?

Проблема: конструктор Windows Forms не работает для унаследованного пользовательского элемента управления, когда базовый класс реализует интерфейс из другой сборки.

Платформа: VS 2010 SP1 , .NET 4.0 Framework

Ошибка:

Не удалось отобразить конструктор для этот файл, потому что ни один из классов внутри него можно спроектировать. В дизайнер проверил следующее классы в файле: MyControl --- базовый класс MyBaseControlLib.MyBaseControl может не грузиться. Убедитесь, что сборка были упомянуты и что все проекты были построены.

в System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument (IDesignerSerializationManager менеджер) в System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad (IDesignerSerializationManager менеджер) в Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad (IDesignerSerializationManager serializationManager) в Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted (Int32 fReload)

У меня есть решение с 3 проектами библиотек классов:

MyInterfaceLib:

namespace MyInterfaceLib
{
    public interface IMyInterface
    {
        void Foo();
    }
}

MyBaseControlLib:

namespace MyBaseControlLib
{
    using System.Windows.Forms;
    using MyInterfaceLib;

    public partial class MyBaseControl : UserControl, IMyInterface
    {
        public MyBaseControl()
        {
            InitializeComponent();
        }

        public void Foo()
        {
        }
    }
}

MyDerivedLib:

namespace MyDerivedControlLib
{
    using MyBaseControlLib;

    public partial class MyControl : MyBaseControl
    {
        public MyControl()
        {
            InitializeComponent();
        }
    }
}

Хотя дизайнер работает с MyBaseControl, он не работает с MyControl. Если MyBaseControl не реализует IMyInterface, конструктор также работает с MyControl.

Есть идеи?

Спасибо, Роберт

6
задан Robert Hahn 23 March 2011 в 13:31
поделиться