mirror of
https://github.com/ChronosX88/mta-mono.git
synced 2024-11-22 10:12:20 +00:00
Добавлен поиск и получение метода по имени из кэша класса
This commit is contained in:
parent
14eae5496a
commit
3001c4cd55
@ -153,14 +153,14 @@ const char* CMonoClass::GetNameSpace( void )
|
|||||||
return mono_class_get_namespace( this->m_pClass );
|
return mono_class_get_namespace( this->m_pClass );
|
||||||
}
|
}
|
||||||
|
|
||||||
MonoMethod* CMonoClass::GetMethod( const char* szMethodName, int iParamCount )
|
MonoMethod* CMonoClass::GetMethodFromName( string strMethodName, int iParamCount )
|
||||||
{
|
{
|
||||||
return mono_class_get_method_from_name( this->m_pClass, szMethodName, iParamCount );
|
return mono_class_get_method_from_name( this->m_pClass, strMethodName.c_str(), iParamCount );
|
||||||
}
|
}
|
||||||
|
|
||||||
MonoMethod* CMonoClass::GetMethod( const char* szMethodName )
|
MonoMethod* CMonoClass::GetMethod( string strMethodName )
|
||||||
{
|
{
|
||||||
MonoMethodDesc* pMonoMethodDesc = mono_method_desc_new( szMethodName, false );
|
MonoMethodDesc* pMonoMethodDesc = mono_method_desc_new( strMethodName.c_str(), false );
|
||||||
|
|
||||||
if( pMonoMethodDesc )
|
if( pMonoMethodDesc )
|
||||||
{
|
{
|
||||||
@ -174,12 +174,30 @@ MonoMethod* CMonoClass::GetMethod( const char* szMethodName )
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
MonoEvent* CMonoClass::GetEvent( const char* szEventName )
|
MonoMethod* CMonoClass::GetMethod( string strMethodName, uint uiIndex )
|
||||||
{
|
{
|
||||||
return this->m_Events.count( szEventName ) > 0 ? this->m_Events[ szEventName ] : nullptr;
|
if( this->m_Methods[ strMethodName ].size() > 0 )
|
||||||
|
{
|
||||||
|
uint i = 0;
|
||||||
|
|
||||||
|
for( auto ptr : this->m_Methods[ strMethodName ] )
|
||||||
|
{
|
||||||
|
if( i++ == uiIndex )
|
||||||
|
{
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
MonoClassField* CMonoClass::GetField( const char* szFieldName )
|
MonoEvent* CMonoClass::GetEvent( string strEventName )
|
||||||
{
|
{
|
||||||
return this->m_Fields.count( szFieldName ) > 0 ? this->m_Fields[ szFieldName ] : nullptr;
|
return this->m_Events[ strEventName ];
|
||||||
|
}
|
||||||
|
|
||||||
|
MonoClassField* CMonoClass::GetField( string strFieldName )
|
||||||
|
{
|
||||||
|
return this->m_Fields[ strFieldName ];
|
||||||
}
|
}
|
@ -17,10 +17,10 @@ class CMonoClass;
|
|||||||
|
|
||||||
#include "CMonoDomain.h"
|
#include "CMonoDomain.h"
|
||||||
|
|
||||||
typedef map< const char*, list< MonoMethod* > > MonoMethodMap;
|
typedef map< string, list< MonoMethod* > > MonoMethodMap;
|
||||||
typedef map< const char*, list< MonoProperty* > > MonoPropertyMap;
|
typedef map< string, list< MonoProperty* > > MonoPropertyMap;
|
||||||
typedef map< const char*, MonoEvent* > MonoEventMap;
|
typedef map< string, MonoEvent* > MonoEventMap;
|
||||||
typedef map< const char*, MonoClassField* > MonoClassFieldMap;
|
typedef map< string, MonoClassField* > MonoClassFieldMap;
|
||||||
|
|
||||||
class CMonoClass
|
class CMonoClass
|
||||||
{
|
{
|
||||||
@ -47,11 +47,12 @@ public:
|
|||||||
const char* GetName ( void );
|
const char* GetName ( void );
|
||||||
const char* GetNameSpace ( void );
|
const char* GetNameSpace ( void );
|
||||||
|
|
||||||
MonoMethod* GetMethod ( const char* szMethodName, int iParamCount );
|
MonoMethod* GetMethodFromName ( string strMethodName, int iParamCount );
|
||||||
MonoMethod* GetMethod ( const char* szMethodName );
|
MonoMethod* GetMethod ( string strMethodName );
|
||||||
|
MonoMethod* GetMethod ( string strMethodName, uint uiIndex );
|
||||||
|
|
||||||
MonoEvent* GetEvent ( const char* szEventName );
|
MonoEvent* GetEvent ( string strEventName );
|
||||||
MonoClassField* GetField ( const char* szFieldName );
|
MonoClassField* GetField ( string strFieldName );
|
||||||
|
|
||||||
MonoClass* GetMonoPtr ( void ) { return this->m_pClass; }
|
MonoClass* GetMonoPtr ( void ) { return this->m_pClass; }
|
||||||
CMonoDomain* GetDomain ( void ) { return this->m_pDomain; }
|
CMonoDomain* GetDomain ( void ) { return this->m_pDomain; }
|
||||||
|
Loading…
Reference in New Issue
Block a user