summaryrefslogtreecommitdiff
path: root/Assets/Plugins/AdvancedInspector/Interface/IRuntimeAttribute.cs
blob: 10710819c818cefc5d814f081f162bb7800e63ea (plain)
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
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;

namespace AdvancedInspector
{
    /// <summary>
    /// Define an attribute that stores a method name
    /// Which should be turned into a delegate at runtime.
    /// </summary>
    public interface IRuntimeAttribute<T> : IRuntimeAttribute
    {
        /// <summary>
        /// Invoke the internal delegates and returns the requested values.
        /// T should be the same type as the Delegate return type.
        /// </summary>
        T Invoke(int index, object instance, object value);
    }

    public interface IRuntimeAttribute
    {
        /// <summary>
        /// Name of the MethodInfo to retrieve at runtime.
        /// </summary>
        string MethodName { get; }

        /// <summary>
        /// Prototype template of the delegate to create
        /// </summary>
        Type Template { get; }

        /// <summary>
        /// Prototype template for static external delegate
        /// </summary>
        Type TemplateStatic { get; }

        /// <summary>
        /// List of delegates to invoke.
        /// </summary>
        List<Delegate> Delegates { get; set; }
    }
}