CollectionEditor
のプロパティを使用するユーザーコントロールがあります。私はコントロールをテストするために同じソリューションで別のプロジェクトを使用しています。私のコレクションエディタは問題なく動作しますが、IDEがコンポーネントdllを再コンパイルした後に設計時にエラーを出す点が異なります。 IDEを閉じると、ソリューションを再度開くよりも問題なく動作します。私がコントロールのコードを変更し、それを再コンパイルすると、IDEは私に同じエラーを返します。私は、コントロールを再コンパイルすると、IDEがコレクションのコードを生成しないことに気付きました。しかし、IDEを閉じて再度開くと、コードが生成されます。CollectionEditorと "**** 'プロパティのコード生成に失敗しました"エラーメッセージ
エラーメッセージ:プロパティ '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; ... \ AppData \ Local \ Microsoft \ VCSExpress \ 10.0 \ ProjectAssemblies \ eb4apk_301 \ MyComponent.dll 'のコンテキスト' LoadNeither 'のコンテキストで、Version = 1.0.0.0、Culture = neutral、PublicKeyToken =
ここはコントロールのプロパティです。
[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;
}
}