У меня есть пользовательский элемент управления, который использует свойство с CollectionEditor
. И я использую другой проект в том же решении, чтобы проверить контроль. Мой редактор коллекций работает без проблем, за исключением того, что IDE выдает ошибку во время разработки после перекомпиляции компонента dll. Если я закрою IDE, чем снова открою решение, оно работает без проблем. Если я изменяю код элемента управления и перекомпилирую его, IDE выдает мне ту же ошибку. Я понял, что IDE не генерирует код для коллекции, если я перекомпилирую элемент управления. Но если я закрою и снова открою IDE, он сгенерирует код.
Сообщение об ошибке:
Ошибка генерации кода для свойства AProperty. Ошибка была: «[A] MyComponent.AProperty не может быть приведен к [B] MyComponent.AProperty. Тип А происходит от 'MyComponent; Версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken = null 'в контексте' LoadNeither 'в расположении' ... \ AppData \ Local \ Microsoft \ VCSExpress \ 10.0 \ ProjectAssemblies \ 1f88w0l001 \ MyComponent.dll '. Тип B происходит от MyComponent; Версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken = null 'в контексте' LoadNeither 'в местоположении' ... \ AppData \ Local \ Microsoft \ VCSExpress \ 10.0 \ ProjectAssemblies \ eb4apk_301 \ MyComponent.dll '.'
Вот свойство в элементе управления.
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Editor(typeof(ACollectionEditor), typeof(UITypeEditor))]
public ACollection AProperty { get { return prop; } }
А следующие коды CollectionEditor
:
public class ACollectionEditor : CollectionEditor
{
protected override object CreateInstance(Type itemType)
{
nameCounter++;
//var newObj = Activator.CreateInstance(itemType, new object[] { "AProperty" + nameCounter.ToString(), parent} );
var newObj = new AProperty("AProperty" + nameCounter.ToString());
return newObj;
}
}