CollectionEditor和“属性'代码生成'****'失败”错误消息

时间:2011-10-20 19:54:58

标签: c# .net user-controls custom-controls collectioneditor

我有一个使用CollectionEditor属性的用户控件。我在同一个解决方案中使用另一个项目来测试控件。我的集合编辑器没有问题,除了IDE在我重新编译组件dll后在设计时给出了错误。如果我关闭IDE,而不是重新打开解决方案,它可以正常运行。如果我更改控件的代码并重新编译它,IDE会给我同样的错误。我意识到如果我重新编译控件,IDE不会为集合生成代码。但是,如果我关闭并重新打开IDE,它会生成代码。

错误讯息:

  

属性'AProperty'的代码生成失败。错误是:'[A] MyComponent.AProperty无法转换为[B] MyComponent.AProperty。类型A源自'MyComponent;在位置'... \ AppData \ Local \ Microsoft \ VCSExpress \ 10.0 \ ProjectAssemblies \ 1f88w0l001 \ MyComponent.dll'的上下文'LoadNeither'中,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'。 B型来自'MyComponent; Version = 1.0.0.0,Culture = neutral,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;
    }
}

1 个答案:

答案 0 :(得分:0)

我遇到了问题时间,并在替换

后解决了
SubTitleItem newSub = LearnItem.MainSub.GetSubByPosition(vlc.Time);

SubTitleItem newSub = LearnItem.MainSub.GetSubByPosition(GetPlayerPosition());

public long GetPlayerPosition() {
    return vlc.Time;
}

---和---

if (LearnItem.PlayerPosition != 0) vlc.Time = LearnItem.PlayerPosition;

if (LearnItem.PlayerPosition != 0) SetPlayerPosition(LearnItem.PlayerPosition);

public void SetPlayerPosition(long Pos) {
    vlc.Time = Pos;
}

也许这只是一个伎俩,但它对我有用。