e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
107 lines
3.3 KiB
C#
107 lines
3.3 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="ConnectionPoint.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//------------------------------------------------------------------------------
|
|
|
|
namespace System.Web.UI.WebControls.WebParts {
|
|
|
|
using System;
|
|
using System.Reflection;
|
|
using System.Web;
|
|
using System.Web.Util;
|
|
|
|
/// <devdoc>
|
|
/// A ConnectionPoint defines a possible connection. A WebPart uses this
|
|
/// to define the connections it can provide or consume.
|
|
/// </devdoc>
|
|
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;
|
|
}
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// Base implementation returns true, can be overridden by subclasses to return
|
|
/// true or false conditionally based on the state of the Control.
|
|
/// </devdoc>
|
|
public virtual bool GetEnabled(Control control) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|