SimpleWindow
载入中...
搜索中...
未找到
sw::Reflection类 参考

提供反射相关功能 更多...

#include <Reflection.h>

Public 成员函数

 Reflection ()=delete
 静态类,不允许实例化
 

静态 Public 成员函数

template<typename T , typename TField >
static FieldId GetFieldId (TField T::*field) noexcept
 获取字段的唯一标识符
 
template<typename T , typename TRet , typename... Args>
static auto GetMethod (TRet(T::*method)(Args...)) -> Delegate< TRet(DynamicObject &, Args...)>
 获取成员函数的委托
 
template<typename T , typename TRet , typename... Args>
static auto GetMethod (TRet(T::*method)(Args...) const) -> Delegate< TRet(DynamicObject &, Args...)>
 获取常量成员函数的委托
 
template<typename T , typename TField >
static auto GetFieldAccessor (TField T::*field) -> Delegate< TField &(DynamicObject &)>
 获取字段的访问器
 
template<typename T , typename TProperty >
static auto GetPropertyGetter (TProperty T::*prop) -> typename std::enable_if< _IsReadableProperty< TProperty >::value, Delegate< typename TProperty::TValue(DynamicObject &)> >::type
 获取属性的Getter委托
 
template<typename T , typename TProperty >
static auto GetPropertyGetter (TProperty T::*prop) -> typename std::enable_if< _IsProperty< TProperty >::value &&!_IsReadableProperty< TProperty >::value, Delegate< typename TProperty::TValue(DynamicObject &)> >::type
 获取属性的Getter委托
 
template<typename T , typename TProperty >
static auto GetPropertySetter (TProperty T::*prop) -> typename std::enable_if< _IsWritableProperty< TProperty >::value, Delegate< void(DynamicObject &, typename TProperty::TSetterParam)> >::type
 获取属性的Setter委托
 
template<typename T , typename TProperty >
static auto GetPropertySetter (TProperty T::*prop) -> typename std::enable_if< _IsProperty< TProperty >::value &&!_IsWritableProperty< TProperty >::value, Delegate< void(DynamicObject &, typename TProperty::TSetterParam)> >::type
 获取属性的Setter委托
 
template<typename T , typename TFunc , typename... Args>
static auto InvokeMethod (const Delegate< TFunc > &method, T &obj, Args &&...args) -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, decltype(method(obj, std::forward< Args >(args)...))>::type
 调用成员函数
 
template<typename T , typename TFunc , typename... Args>
static auto InvokeMethod (const Delegate< TFunc > &method, T &obj, Args &&...args) -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value, decltype(method(std::declval< DynamicObject & >(), std::forward< Args >(args)...))>::type
 调用成员函数
 
template<typename T , typename TField >
static auto AccessField (const Delegate< TField &(DynamicObject &)> &accessor, T &obj) -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, TField & >::type
 访问字段
 
template<typename T , typename TField >
static auto AccessField (const Delegate< TField &(DynamicObject &)> &accessor, T &obj) -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value, TField & >::type
 访问字段
 
template<typename T , typename TValue >
static auto GetProperty (const Delegate< TValue(DynamicObject &)> &getter, T &obj) -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, TValue >::type
 获取属性值
 
template<typename T , typename TValue >
static auto GetProperty (const Delegate< TValue(DynamicObject &)> &getter, T &obj) -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value, TValue >::type
 获取属性值
 
template<typename T , typename TParam , typename TValue >
static auto SetProperty (const Delegate< void(DynamicObject &, TParam)> &setter, T &obj, TValue &&value) -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value >::type
 设置属性值
 
template<typename T , typename TParam , typename TValue >
static auto SetProperty (const Delegate< void(DynamicObject &, TParam)> &setter, T &obj, TValue &&value) -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value >::type
 设置属性值
 

详细描述

提供反射相关功能

成员函数说明

◆ AccessField() [1/2]

template<typename T , typename TField >
static auto sw::Reflection::AccessField ( const Delegate< TField &(DynamicObject &)> &  accessor,
T &  obj 
) -> typename std::enable_if<std::is_base_of<DynamicObject, T>::value, TField &>::type
inlinestatic

访问字段

模板参数
T字段所属类类型
TField字段类型
参数
accessor字段访问器的委托
obj对象引用
返回
字段引用

◆ AccessField() [2/2]

template<typename T , typename TField >
static auto sw::Reflection::AccessField ( const Delegate< TField &(DynamicObject &)> &  accessor,
T &  obj 
) -> typename std::enable_if<!std::is_base_of<DynamicObject, T>::value, TField &>::type
inlinestatic

访问字段

模板参数
T字段所属类类型
TField字段类型
参数
accessor字段访问器的委托
obj对象引用
返回
字段引用

◆ GetFieldAccessor()

template<typename T , typename TField >
static auto sw::Reflection::GetFieldAccessor ( TField T::*  field) -> Delegate<TField &(DynamicObject &)>
inlinestatic

获取字段的访问器

模板参数
T字段所属类类型
TField字段类型
参数
field字段的成员指针
返回
对应的访问器

◆ GetFieldId()

template<typename T , typename TField >
static FieldId sw::Reflection::GetFieldId ( TField T::*  field)
inlinestaticnoexcept

获取字段的唯一标识符

模板参数
T字段所属类类型
TField字段类型
参数
field字段的成员指针
返回
对应的字段ID

◆ GetMethod() [1/2]

template<typename T , typename TRet , typename... Args>
static auto sw::Reflection::GetMethod ( TRet(T::*)(Args...) const  method) -> Delegate<TRet(DynamicObject &, Args...)>
inlinestatic

获取常量成员函数的委托

模板参数
T成员函数所属类类型
TRet成员函数返回值类型
Args成员函数参数类型列表
参数
method成员函数指针
返回
对应的委托

◆ GetMethod() [2/2]

template<typename T , typename TRet , typename... Args>
static auto sw::Reflection::GetMethod ( TRet(T::*)(Args...)  method) -> Delegate<TRet(DynamicObject &, Args...)>
inlinestatic

获取成员函数的委托

模板参数
T成员函数所属类类型
TRet成员函数返回值类型
Args成员函数参数类型列表
参数
method成员函数指针
返回
对应的委托

◆ GetProperty() [1/2]

template<typename T , typename TValue >
static auto sw::Reflection::GetProperty ( const Delegate< TValue(DynamicObject &)> &  getter,
T &  obj 
) -> typename std::enable_if<std::is_base_of<DynamicObject, T>::value, TValue>::type
inlinestatic

获取属性值

模板参数
T属性所属类类型
TValue属性值类型
参数
getter属性Getter的委托
obj对象引用
返回
属性值

◆ GetProperty() [2/2]

template<typename T , typename TValue >
static auto sw::Reflection::GetProperty ( const Delegate< TValue(DynamicObject &)> &  getter,
T &  obj 
) -> typename std::enable_if<!std::is_base_of<DynamicObject, T>::value, TValue>::type
inlinestatic

获取属性值

模板参数
T属性所属类类型
TValue属性值类型
参数
getter属性Getter的委托
obj对象引用
返回
属性值

◆ GetPropertyGetter() [1/2]

template<typename T , typename TProperty >
static auto sw::Reflection::GetPropertyGetter ( TProperty T::*  prop) -> typename std::enable_if< _IsProperty<TProperty>::value && !_IsReadableProperty<TProperty>::value, Delegate<typename TProperty::TValue(DynamicObject &)>>::type
inlinestatic

获取属性的Getter委托

模板参数
T属性所属类类型
TProperty属性类型
参数
prop属性指针
返回
对应的Getter委托
注解
若属性不可读则返回空委托

◆ GetPropertyGetter() [2/2]

template<typename T , typename TProperty >
static auto sw::Reflection::GetPropertyGetter ( TProperty T::*  prop) -> typename std::enable_if< _IsReadableProperty<TProperty>::value, Delegate<typename TProperty::TValue(DynamicObject &)>>::type
inlinestatic

获取属性的Getter委托

模板参数
T属性所属类类型
TProperty属性类型
参数
prop属性指针
返回
对应的Getter委托
注解
若属性不可读则返回空委托

◆ GetPropertySetter() [1/2]

template<typename T , typename TProperty >
static auto sw::Reflection::GetPropertySetter ( TProperty T::*  prop) -> typename std::enable_if< _IsProperty<TProperty>::value && !_IsWritableProperty<TProperty>::value, Delegate<void(DynamicObject &, typename TProperty::TSetterParam)>>::type
inlinestatic

获取属性的Setter委托

模板参数
T属性所属类类型
TProperty属性类型
参数
prop属性指针
返回
对应的Setter委托
注解
若属性不可写则返回空委托

◆ GetPropertySetter() [2/2]

template<typename T , typename TProperty >
static auto sw::Reflection::GetPropertySetter ( TProperty T::*  prop) -> typename std::enable_if< _IsWritableProperty<TProperty>::value, Delegate<void(DynamicObject &, typename TProperty::TSetterParam)>>::type
inlinestatic

获取属性的Setter委托

模板参数
T属性所属类类型
TProperty属性类型
参数
prop属性指针
返回
对应的Setter委托
注解
若属性不可写则返回空委托

◆ InvokeMethod() [1/2]

template<typename T , typename TFunc , typename... Args>
static auto sw::Reflection::InvokeMethod ( const Delegate< TFunc > &  method,
T &  obj,
Args &&...  args 
) -> typename std::enable_if<std::is_base_of<DynamicObject, T>::value, decltype(method(obj, std::forward<Args>(args)...))>::type
inlinestatic

调用成员函数

模板参数
T成员函数所属类类型
TFunc成员函数类型
Args成员函数参数类型列表
参数
method成员函数的委托
obj对象引用
args成员函数参数列表
返回
成员函数返回值

◆ InvokeMethod() [2/2]

template<typename T , typename TFunc , typename... Args>
static auto sw::Reflection::InvokeMethod ( const Delegate< TFunc > &  method,
T &  obj,
Args &&...  args 
) -> typename std::enable_if<!std::is_base_of<DynamicObject, T>::value, decltype(method(std::declval<DynamicObject &>(), std::forward<Args>(args)...))>::type
inlinestatic

调用成员函数

模板参数
T成员函数所属类类型
TFunc成员函数类型
Args成员函数参数类型列表
参数
method成员函数的委托
obj对象引用
args成员函数参数列表
返回
成员函数返回值

◆ SetProperty() [1/2]

template<typename T , typename TParam , typename TValue >
static auto sw::Reflection::SetProperty ( const Delegate< void(DynamicObject &, TParam)> &  setter,
T &  obj,
TValue &&  value 
) -> typename std::enable_if<std::is_base_of<DynamicObject, T>::value>::type
inlinestatic

设置属性值

模板参数
T属性所属类类型
TParam属性Setter参数类型
TValue属性值类型
参数
setter属性Setter的委托
obj对象引用
value属性值

◆ SetProperty() [2/2]

template<typename T , typename TParam , typename TValue >
static auto sw::Reflection::SetProperty ( const Delegate< void(DynamicObject &, TParam)> &  setter,
T &  obj,
TValue &&  value 
) -> typename std::enable_if<!std::is_base_of<DynamicObject, T>::value>::type
inlinestatic

设置属性值

模板参数
T属性所属类类型
TParam属性Setter参数类型
TValue属性值类型
参数
setter属性Setter的委托
obj对象引用
value属性值

该类的文档由以下文件生成: