ProviderConnectionPoint コンストラクタ
アセンブリ: System.Web (system.web.dll 内)

Public Sub New ( _ callbackMethod As MethodInfo, _ interfaceType As Type, _ controlType As Type, _ displayName As String, _ id As String, _ allowsMultipleConnections As Boolean _ )
Dim callbackMethod As MethodInfo Dim interfaceType As Type Dim controlType As Type Dim displayName As String Dim id As String Dim allowsMultipleConnections As Boolean Dim instance As New ProviderConnectionPoint(callbackMethod, interfaceType, controlType, displayName, id, allowsMultipleConnections)
public ProviderConnectionPoint ( MethodInfo callbackMethod, Type interfaceType, Type controlType, string displayName, string id, bool allowsMultipleConnections )
public: ProviderConnectionPoint ( MethodInfo^ callbackMethod, Type^ interfaceType, Type^ controlType, String^ displayName, String^ id, bool allowsMultipleConnections )
public ProviderConnectionPoint ( MethodInfo callbackMethod, Type interfaceType, Type controlType, String displayName, String id, boolean allowsMultipleConnections )
public function ProviderConnectionPoint ( callbackMethod : MethodInfo, interfaceType : Type, controlType : Type, displayName : String, id : String, allowsMultipleConnections : boolean )

例外の種類 | 条件 |
---|---|
ArgumentNullException | callbackMethod が null 参照 (Visual Basic では Nothing) です。 または interfaceType が null 参照 (Visual Basic では Nothing) です。 または controlType が null 参照 (Visual Basic では Nothing) です。 または displayName が null 参照 (Visual Basic では Nothing) または空の文字列 ("") です。 |
ArgumentException |

ProviderConnectionPoint クラスの ProviderConnectionPoint コンストラクタは、基本コンストラクタを呼び出し、それにさまざまなパラメータを渡して基本クラスを初期化します。
基本クラスのコンストラクタは、コネクション ポイントの複数のパラメータをチェックし、いくつかの例外をスローする場合があります。発生する可能性のある例外の一覧については、「例外」のセクションを参照してください。
ProviderConnectionPoint コンストラクタを呼び出して、ProviderConnectionPoint クラスの独自のインスタンスを作成できます。しかし、単純に接続を確立するだけでクラスの拡張を行わない場合は、GetProviderConnectionPoints メソッドを呼び出し、既存のコネクション ポイント オブジェクトをプロバイダから返す必要があります。

ProviderConnectionPoint クラスの派生としてカスタム プロバイダ コネクション ポイントを作成する方法を次のコード例に示します。
コード例の最初の部分は、プロバイダおよびコンシューマの WebPart コントロールのソースと、TableProviderConnectionPoint という名前のカスタム ProviderConnectionPoint クラスです。TableProviderConnectionPoint クラスのコンストラクタは基本コンストラクタを呼び出し、「パラメータ」のセクションで示した必須パラメータを渡す必要があります。また、TableProviderWebPart クラスでは、接続のためのコールバック メソッドとして GetConnectionInterface メソッドが指定され、ConnectionProvider 属性がパラメータとしてカスタム TableProviderConnectionPoint を宣言していることも必要です。これは、カスタム プロバイダ コネクション ポイントを作成し、それをプロバイダ コントロールに関連付ける方法を示しています。この例は、ソース コードが動的にコンパイルされ、Web アプリケーションの App_Code サブフォルダ内のファイルにソース コード ファイルを 配置する必要があることを前提にしています。
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Reflection; using System.Web; using System.Web.UI; using System.Security.Permissions; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; //This sample code creates a Web Parts control that acts as a provider of table data. namespace Samples.AspNet.CS.Controls { [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public sealed class TableProviderWebPart : WebPart, IWebPartTable { DataTable _table; public TableProviderWebPart() { _table = new DataTable(); DataColumn col = new DataColumn(); col.DataType = typeof(string); col.ColumnName = "Name"; _table.Columns.Add(col); col = new DataColumn(); col.DataType = typeof(string); col.ColumnName = "Address"; _table.Columns.Add(col); col = new DataColumn(); col.DataType = typeof(int); col.ColumnName = "ZIP Code"; _table.Columns.Add(col); DataRow row = _table.NewRow(); row["Name"] = "John Q. Public"; row["Address"] = "123 Main Street"; row["ZIP Code"] = 98000; _table.Rows.Add(row); } public PropertyDescriptorCollection Schema { get { return TypeDescriptor.GetProperties(_table.DefaultView[0]); } } public void GetTableData(TableCallback callback) { callback(_table.Rows); } public bool ConnectionPointEnabled { get { object o = ViewState["ConnectionPointEnabled"]; return (o != null) ? (bool)o : true; } set { ViewState["ConnectionPointEnabled"] = value; } } [ConnectionProvider("Table", typeof(TableProviderConnectionPoint), AllowsMultipleConnections = true)] public IWebPartTable GetConnectionInterface() { return new TableProviderWebPart(); } public class TableProviderConnectionPoint : ProviderConnectionPoint { public TableProviderConnectionPoint(MethodInfo callbackMethod, Type interfaceType, Type controlType, string name, string id, bool allowsMultipleConnections) : base( callbackMethod, interfaceType, controlType, name, id, allowsMultipleConnections) { } public override bool GetEnabled(Control control) { return ((TableProviderWebPart)control).ConnectionPointEnabled; } } } // This code sample demonstrates a custom WebPart controls that acts as // a consumer in a Web Parts connection. [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class TableConsumer : WebPart { private IWebPartTable _provider; private ICollection _tableData; private void GetTableData(object tableData) { _tableData = (ICollection)tableData; } protected override void OnPreRender(EventArgs e) { if (_provider != null) { _provider.GetTableData(new TableCallback(GetTableData)); } } protected override void RenderContents(HtmlTextWriter writer) { if (_provider != null) { PropertyDescriptorCollection props = _provider.Schema; int count = 0; if (props != null && props.Count > 0 && _tableData != null) { foreach (PropertyDescriptor prop in props) { foreach (DataRow o in _tableData) { writer.Write(prop.DisplayName + ": " + o[count]); } writer.WriteBreak(); writer.WriteLine(); count = count + 1; } } else { writer.Write("No data"); } } else { writer.Write("Not connected"); } } [ConnectionConsumer("Table")] public void SetConnectionInterface(IWebPartTable provider) { _provider = provider; } public class TableConsumerConnectionPoint : ConsumerConnectionPoint { public TableConsumerConnectionPoint(MethodInfo callbackMethod, Type interfaceType, Type controlType, string name, string id, bool allowsMultipleConnections) : base( callbackMethod, interfaceType, controlType, name, id, allowsMultipleConnections) { } } } }
コード例の 2 番目の部分は、静的 Web パーツ接続でカスタム コントロールをホストする Web ページです。ページの一番上には、カスタム コントロールのプレフィックスと名前空間を宣言する Register ディレクティブがあります。接続は <asp:webpartconnection> 要素を使用して宣言され、プロバイダ コントロールとコンシューマ コントロールは <asp:webpartzone> 要素内で宣言されます。
<%@ page language="C#" %> <%@ register tagprefix="aspSample" namespace="Samples.AspNet.CS.Controls" %> <html> <head runat="server"> <title>IField Test Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:webpartmanager id="WebPartManager1" runat="server"> <StaticConnections> <asp:WebPartConnection id=wp1 ProviderID=provider1 ConsumerID=consumer1> </asp:WebPartConnection> </StaticConnections> </asp:webpartmanager> <asp:webpartzone id="WebPartZone1" runat="server"> <zoneTemplate> <aspSample:TableProviderWebPart ID=provider1 runat=Server title="Web Parts Table Provider Control" /> <aspSample:TableConsumer ID=consumer1 runat=Server title="Web Parts Table Consumer Control"/> </zoneTemplate> </asp:webpartzone> </div> </form> </body> </html>
ブラウザでページを読み込みます。コントロール間の接続が既に存在し、接続がページ内で静的接続として宣言されているため、コンシューマはプロバイダからのデータを表示します。

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- ProviderConnectionPoint コンストラクタのページへのリンク