|
@@ -45,7 +45,7 @@ namespace MoonSharp.Interpreter.Interop
|
|
|
|
|
|
|
|
foreach (PropertyInfo pi in type.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static))
|
|
foreach (PropertyInfo pi in type.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static))
|
|
|
{
|
|
{
|
|
|
- if (CheckVisibility(pi.GetCustomAttributes(true), pi.GetGetMethod().IsPublic || pi.GetSetMethod().IsPublic))
|
|
|
|
|
|
|
+ if (CheckVisibility(pi.GetCustomAttributes(true), IsPropertyInfoPublic(pi)))
|
|
|
{
|
|
{
|
|
|
var pd = new UserDataPropertyDescriptor(pi, this.AccessMode);
|
|
var pd = new UserDataPropertyDescriptor(pi, this.AccessMode);
|
|
|
m_Properties.Add(pd.Name, pd);
|
|
m_Properties.Add(pd.Name, pd);
|
|
@@ -54,6 +54,14 @@ namespace MoonSharp.Interpreter.Interop
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private bool IsPropertyInfoPublic(PropertyInfo pi)
|
|
|
|
|
+ {
|
|
|
|
|
+ MethodInfo getter = pi.GetGetMethod();
|
|
|
|
|
+ MethodInfo setter = pi.GetSetMethod();
|
|
|
|
|
+
|
|
|
|
|
+ return (getter != null && getter.IsPublic) || (setter != null && setter.IsPublic);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private bool CheckVisibility(object[] attributes, bool isPublic)
|
|
private bool CheckVisibility(object[] attributes, bool isPublic)
|
|
|
{
|
|
{
|
|
|
MoonSharpVisibleAttribute va = attributes.OfType<MoonSharpVisibleAttribute>().SingleOrDefault();
|
|
MoonSharpVisibleAttribute va = attributes.OfType<MoonSharpVisibleAttribute>().SingleOrDefault();
|