Tanoda
MethodCacheEntry.cs
Go to the documentation of this file.
1
using
System;
2
using
System.Linq;
3
using
System.Reflection;
4
5
namespace
RuntimeUnityEditor.Core.Inspector.Entries
6
{
7
public
class
MethodCacheEntry
:
CacheEntryBase
8
{
9
public
MethodCacheEntry
(
object
ins,
MethodInfo
m) : base(GetMethodName(ins, m))
10
{
11
if
(m ==
null
)
12
throw
new
ArgumentNullException();
13
14
_instance = ins;
15
MethodInfo
= m;
16
}
17
18
private
static
string
GetMethodName(
object
ins, MethodBase methodInfo)
19
{
20
if
(methodInfo !=
null
)
21
{
22
var name =
FieldCacheEntry
.GetMemberName(ins, methodInfo);
23
24
var genericArguments = methodInfo.GetGenericArguments();
25
if
(genericArguments.Any())
26
{
27
name +=
"<"
+
string
.Join(
", "
, genericArguments.Select(x => x.Name).ToArray()) +
">"
;
28
}
29
30
return
name;
31
}
32
return
"INVALID"
;
33
}
34
35
public
MethodInfo
MethodInfo
{
get
;
private
set
; }
36
37
private
readonly
object
_instance;
38
private
object
_valueCache;
39
40
public
override
object
GetValueToCache
()
41
{
42
return
(_instance ==
null
?
"Static "
:
""
) +
"Method call - enter to evaluate"
;
43
}
44
45
public
override
object
GetValue
()
46
{
47
return
_valueCache ?? base.GetValue();
48
}
49
50
public
override
object
EnterValue
()
51
{
52
try
53
{
54
// If this is the first user clicked, eval the method and display the result. second time enter as normal
55
if
(_valueCache ==
null
)
56
{
57
var result =
MethodInfo
.Invoke(_instance,
null
);
58
59
_valueCache = result;
60
return
null
;
61
}
62
63
return
_valueCache;
64
}
65
catch
(Exception ex)
66
{
67
RuntimeUnityEditorCore
.Logger.
Log
(
LogLevel
.Warning,
"Failed to evaluate the method"
+
Name
() +
" - "
+ex.Message);
68
_valueCache = ex;
69
return
null
;
70
}
71
}
72
73
protected
override
bool
OnSetValue
(
object
newValue)
74
{
75
return
false
;
76
}
77
78
public
override
Type
Type
()
79
{
80
return
MethodInfo
.ReturnType;
81
}
82
83
public
override
bool
CanSetValue
()
84
{
85
return
false
;
86
}
87
88
public
override
bool
CanEnterValue
()
89
{
90
return
_valueCache ==
null
|| base.CanEnterValue();
91
}
92
}
93
}
RuntimeUnityEditor.Core.Inspector.Entries.CacheEntryBase
Definition:
CacheEntryBase.cs:7
RuntimeUnityEditor.Core.Inspector.Entries.CacheEntryBase.Name
string Name()
Definition:
CacheEntryBase.cs:55
RuntimeUnityEditor.Core.Inspector.Entries.FieldCacheEntry
Definition:
FieldCacheEntry.cs:7
RuntimeUnityEditor.Core.Inspector.Entries.MethodCacheEntry
Definition:
MethodCacheEntry.cs:8
RuntimeUnityEditor.Core.Inspector.Entries.MethodCacheEntry.Type
override Type Type()
Definition:
MethodCacheEntry.cs:78
RuntimeUnityEditor.Core.Inspector.Entries.MethodCacheEntry.GetValueToCache
override object GetValueToCache()
Definition:
MethodCacheEntry.cs:40
RuntimeUnityEditor.Core.Inspector.Entries.MethodCacheEntry.CanEnterValue
override bool CanEnterValue()
Definition:
MethodCacheEntry.cs:88
RuntimeUnityEditor.Core.Inspector.Entries.MethodCacheEntry.OnSetValue
override bool OnSetValue(object newValue)
Definition:
MethodCacheEntry.cs:73
RuntimeUnityEditor.Core.Inspector.Entries.MethodCacheEntry.CanSetValue
override bool CanSetValue()
Definition:
MethodCacheEntry.cs:83
RuntimeUnityEditor.Core.Inspector.Entries.MethodCacheEntry.MethodInfo
MethodInfo MethodInfo
Definition:
MethodCacheEntry.cs:35
RuntimeUnityEditor.Core.Inspector.Entries.MethodCacheEntry.GetValue
override object GetValue()
Definition:
MethodCacheEntry.cs:45
RuntimeUnityEditor.Core.Inspector.Entries.MethodCacheEntry.EnterValue
override object EnterValue()
Get object that is entered when variable name is clicked in inspector
Definition:
MethodCacheEntry.cs:50
RuntimeUnityEditor.Core.Inspector.Entries.MethodCacheEntry.MethodCacheEntry
MethodCacheEntry(object ins, MethodInfo m)
Definition:
MethodCacheEntry.cs:9
RuntimeUnityEditor.Core.RuntimeUnityEditorCore
Definition:
RuntimeUnityEditorCore.cs:13
RuntimeUnityEditor.Core.ILoggerWrapper.Log
void Log(LogLevel logLogLevel, object content)
RuntimeUnityEditor.Core.Inspector.Entries
Definition:
CacheEntryBase.cs:5
RuntimeUnityEditor.Core.LogLevel
LogLevel
Definition:
LogLevel.cs:7
Source
Assets
Scripts
BepinRUE
Inspector
Entries
Contents
MethodCacheEntry.cs
Generated by
1.9.3