43 lines
1.7 KiB
C#
43 lines
1.7 KiB
C#
|
using System;
|
||
|
using System.Runtime.Serialization;
|
||
|
using System.Security.Permissions;
|
||
|
using System.Web;
|
||
|
using System.Web.Caching;
|
||
|
using System.Web.Compilation;
|
||
|
|
||
|
namespace System.Web.Caching {
|
||
|
[Serializable]
|
||
|
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Unrestricted)]
|
||
|
public class SubstitutionResponseElement: ResponseElement {
|
||
|
[NonSerialized]
|
||
|
private HttpResponseSubstitutionCallback _callback;
|
||
|
private string _targetTypeName;
|
||
|
private string _methodName;
|
||
|
|
||
|
public HttpResponseSubstitutionCallback Callback { get { return _callback; } }
|
||
|
|
||
|
private SubstitutionResponseElement() { } // hide default constructor
|
||
|
|
||
|
public SubstitutionResponseElement(HttpResponseSubstitutionCallback callback) {
|
||
|
if (callback == null)
|
||
|
throw new ArgumentNullException("callback");
|
||
|
|
||
|
_callback = callback;
|
||
|
}
|
||
|
|
||
|
[OnSerializing()]
|
||
|
private void OnSerializingMethod(StreamingContext context) {
|
||
|
// create a string representation of the callback
|
||
|
_targetTypeName = System.Web.UI.Util.GetAssemblyQualifiedTypeName(_callback.Method.ReflectedType);
|
||
|
_methodName = _callback.Method.Name;
|
||
|
}
|
||
|
|
||
|
[OnDeserialized()]
|
||
|
private void OnDeserializedMethod(StreamingContext context) {
|
||
|
// re-create each ValidationCallbackInfo from its string representation
|
||
|
Type target = BuildManager.GetType(_targetTypeName, true /*throwOnFail*/, false /*ignoreCase*/);
|
||
|
_callback = (HttpResponseSubstitutionCallback) Delegate.CreateDelegate(typeof(HttpResponseSubstitutionCallback), target, _methodName);
|
||
|
}
|
||
|
}
|
||
|
}
|