私はユーザーコントロール(別々のアセンブリで定義されている)を含むWindowsフォームを持っています。フォームとユーザーコントロールの両方がBindingList <>の拡張メソッドを呼び出します。拡張メソッドは、3番目のアセンブリで定義されています。すべてコンパイル&はうまく動作します。VS 2017デザイナー:メソッドが見つかりません
To prevent possible data loss before loading the designer, the following errors must be resolved:
Method not found: 'System.ComponentModel.BindingList
1 KamaTrenda.Utilities.Lists.ListUtilities.AddReset(System.ComponentModel.BindingList
1, System.Collections.Generic.IEnumerable`1)'.
コールスタック:
at System.ComponentModel.ReflectPropertyDescriptor.SetValue(Object component, Object value) at Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkPropertyDescriptor.SetValue(Object component, Object value) at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializePropertyAssignStatement(IDesignerSerializationManager manager, CodeAssignStatement statement, CodePropertyReferenceExpression propertyReferenceEx, Boolean reportError) at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeAssignStatement(IDesignerSerializationManager manager, CodeAssignStatement statement) at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement)
本のセッターの内容をコメントアウト私は、Visual Studio 2017デザイナでフォームを開くしようとした場合
しかし、私はエラーを取得しますプロパティは、デザイナーでフォームを開くことができます:
public IList<IPosition> PositionsToDisplay
{
get { return myPositionsToDisplay.Select(x => x.Position).ToList(); }
set { myPositionsToDisplay.AddReset(value.Select(x => new PositionAdapter(x))); }
}
myPositionsToDisplay:
private readonly BindingList<PositionAdapter> myPositionsToDisplay = new SortableBindingList<PositionAdapter>();
そしてAddReset:
public static class ListUtilities
{
public static BindingList<T> AddReset<T>(this BindingList<T> list, IEnumerable<T> toAdd)
{
list.RaiseListChangedEvents = false;
foreach (T item in toAdd)
list.Add(item);
list.RaiseListChangedEvents = true;
list.ResetBindings();
return list; // for chaining
}
}
私はPositionsToDisplayの定義に
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
を追加しようとしている、それは何の違いが行われていません。
私は閉じ、VS 2017で開いているすべてのドキュメントを閉じて、手動ですべての3つのプロジェクトだけでなく、のAppData \ローカル\マイクロソフト\ VisualStudioを\ 15.0_6d397e1a \ ProjectAssembliesの内容のためのOBJ &ビンディレクトリの内容を削除、再構築しようとしましたVisual Studioを再起動しても差はありませんでした。
フォームまたはコントロールのいずれもない.resxファイルは、このプロパティを参照しています。 (それが再生成されないように、おそらくDesignerSerializationVisibility.Hiddenを追加した後)
this.control.PositionsToDisplay = ((System.Collections.Generic.IList<IPosition>)(resources.GetObject("control.PositionsToDisplay")));
は、これを削除するように見えた: