ASP.NETで使用されるはずのカスタムデータソースを作成しようとして、カスタムデータソースクラス、カスタムエディタ、カスタム直列化可能クラス。デザイナーのプロパティがASPXでシリアライズされない理由
私が理解できないのは、それがうまくいかない理由です。私がおそらく必要以上に多くの属性を持っていても(私はブラウジングして何時間も試しています)、PersistenceMode(PersistenceMode.InnerProperty)
はトリック...また、私のコードはWhy can't I declare sub-elements (properties) of a UserControl in a WebForm?に似ているようです。次のように
コードは動作します。それを使用した後、VSのプロパティが正しく更新されています
[ParseChildren(true)]
[PersistChildren(true)]
public class MyDataSource : DataSourceControl
{
// [much more irrelevant code...]
[Browsable(true)]
[EditorBrowsable(EditorBrowsableState.Always)]
[PersistenceMode(PersistenceMode.InnerProperty)]
[MergableProperty(false)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Editor(typeof(Editors.ResultRequestEditor), typeof(System.Drawing.Design.UITypeEditor))]
public ResultRequest Request { get; set; }
}
[Serializable]
[PersistChildren(true)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ParseChildren(true)]
public class ResultRequest
{
[Browsable(true)]
[EditorBrowsable(EditorBrowsableState.Always)]
public string ColumnName { get; set; }
[Browsable(true)]
[EditorBrowsable(EditorBrowsableState.Always)]
public Type ColumnType { get; set; }
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Always)]
public object[] ResultTypeParameters { get; set; }
}
カスタムエディタが動作しているようです。しかし
、情報がASPXファイルに保持されていない何かを更新した後:
<cc1:MyDataSource ID="SearchDataSource1" runat="server" ProviderID="MyProvider1">
<Request>
// blah
</Request>
</cc1:MyDataSource>
することは、誰かが説明していただけます:私は、データソース内のいくつかのシリアライズ、例えばでした期待何
<cc1:MyDataSource ID="SearchDataSource1" runat="server" ProviderID="MyProvider1" />
なぜこれはうまくいかないのですか?
TypeConvertersなどの属性を付けずに試したことがありますか? –
あなたは何をしようとしているのか分かりません。基本的にあなたは言っている:私は3つのクラスがあり、彼らは動作しません。あなたは何をしようとしていますか?あなたの卑劣な行動と期待される行動は何ですか?あなたは、データソースのいくつかのシリアル化を期待していますか?クラスの直列化?通常、シリアル化はテキストファイルまたはバイナリファイル内で行われます。だから私の次の質問は:どのファイルですか? –
基本的に私は 'ResultRequest'クラス用のカスタムエディタを作ろうとしています。データソース自体は機能していますが、コードの背後にあるコードではなく、ASPXから構成することはできません。 TypeConvertersは、(ASPX XMLへの)デフォルトのシリアル化が機能しないためにそこにあります - f.ex. 'object []'をシリアライズする方法は分かっていますが、デザイナーはそうしないので、私は彼にそのことがどういうかを伝えようとしました。これは編集者のためのものです。はい、私は時間の属性を追加したり削除したりして、どのように動作するかを理解しようとしました(結論:うまくいかず、理解できません)。 – atlaste