admin
2020-06-10 a610f2ab6e543d2cb78c1ef212ac6a74ddc067d9
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Copyright © 2015 The CefSharp Authors. All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
 
using System;
using System.CodeDom;
using System.Collections.ObjectModel;
using System.Reflection;
using System.Runtime.Serialization;
 
namespace CefSharp.Internals
{
    internal sealed class JavascriptCallbackSurrogate : IDataContractSurrogate
    {
        private readonly IJavascriptCallbackFactory callbackFactory;
 
        public JavascriptCallbackSurrogate(IJavascriptCallbackFactory callbackFactory)
        {
            this.callbackFactory = callbackFactory;
        }
 
        public Type GetDataContractType(Type type)
        {
            if (type == typeof(JavascriptCallback))
            {
                return typeof(IJavascriptCallback);
            }
            return type;
        }
 
        public object GetObjectToSerialize(object obj, Type targetType)
        {
            return obj;
        }
 
        public object GetDeserializedObject(object obj, Type targetType)
        {
            var result = obj;
            var dto = obj as JavascriptCallback;
            if (dto != null)
            {
                result = callbackFactory.Create(dto);
            }
            return result;
        }
 
        public object GetCustomDataToExport(MemberInfo memberInfo, Type dataContractType)
        {
            throw new NotImplementedException();
        }
 
        public object GetCustomDataToExport(Type clrType, Type dataContractType)
        {
            throw new NotImplementedException();
        }
 
        public void GetKnownCustomDataTypes(Collection<Type> customDataTypes)
        {
            throw new NotImplementedException();
        }
 
        public Type GetReferencedTypeOnImport(string typeName, string typeNamespace, object customData)
        {
            throw new NotImplementedException();
        }
 
        public CodeTypeDeclaration ProcessImportedType(CodeTypeDeclaration typeDeclaration, CodeCompileUnit compileUnit)
        {
            throw new NotImplementedException();
        }
    }
}