//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.Web.UI.WebControls.WebParts { using System; using System.Reflection; using System.Web; using System.Web.Util; /// /// A ConnectionPoint defines a possible connection. A WebPart uses this /// to define the connections it can provide or consume. /// public abstract class ConnectionPoint { private MethodInfo _callbackMethod; private Type _controlType; private Type _interfaceType; private string _displayName; private string _id; private bool _allowsMultipleConnections; // We do not want the public field to be "const", since that means we can never change its value. // We want the internal const field so we can use it in attributes. public static readonly string DefaultID = DefaultIDInternal; internal const string DefaultIDInternal = "default"; // internal ConnectionPoint(MethodInfo callbackMethod, Type interfaceType, Type controlType, string displayName, string id, bool allowsMultipleConnections) { if (callbackMethod == null) { throw new ArgumentNullException("callbackMethod"); } if (interfaceType == null) { throw new ArgumentNullException("interfaceType"); } if (controlType == null) { throw new ArgumentNullException("controlType"); } if (!controlType.IsSubclassOf(typeof(Control))) { throw new ArgumentException(SR.GetString(SR.ConnectionPoint_InvalidControlType), "controlType"); } if (String.IsNullOrEmpty(displayName)) { throw new ArgumentNullException("displayName"); } _callbackMethod = callbackMethod; _interfaceType = interfaceType; _controlType = controlType; _displayName = displayName; _id = id; _allowsMultipleConnections = allowsMultipleConnections; } public bool AllowsMultipleConnections { get { return _allowsMultipleConnections; } } internal MethodInfo CallbackMethod { get { return _callbackMethod; } } public Type ControlType { get { return _controlType; } } public Type InterfaceType { get { return _interfaceType; } } public string ID { get { return (!String.IsNullOrEmpty(_id)) ? _id : DefaultID; } } public string DisplayName { get { return _displayName; } } /// /// Base implementation returns true, can be overridden by subclasses to return /// true or false conditionally based on the state of the Control. /// public virtual bool GetEnabled(Control control) { return true; } } }