File: SubstitutionResponseElement.cs

package info (click to toggle)
mono 6.14.1%2Bds2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,282,732 kB
  • sloc: cs: 11,182,461; xml: 2,850,281; ansic: 699,123; cpp: 122,919; perl: 58,604; javascript: 30,841; asm: 21,845; makefile: 19,602; sh: 10,973; python: 4,772; pascal: 925; sql: 859; sed: 16; php: 1
file content (42 lines) | stat: -rw-r--r-- 1,788 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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);
        }
    }
}