@ -841,13 +841,26 @@ namespace ICSharpCode.SharpDevelop.Dom
@@ -841,13 +841,26 @@ namespace ICSharpCode.SharpDevelop.Dom
return fallbackResult ;
}
IClass GetClassByDotNetName ( string className , bool lookInReferences )
{
className = className . Replace ( '+' , '.' ) ;
if ( className . Length > 2 & & className [ className . Length - 2 ] = = '`' ) {
int typeParameterCount = className [ className . Length - 1 ] - '0' ;
if ( typeParameterCount < 0 ) typeParameterCount = 0 ;
className = className . Substring ( 0 , className . Length - 2 ) ;
return GetClass ( className , typeParameterCount , LanguageProperties . CSharp , lookInReferences ) ;
} else {
return GetClass ( className , 0 , LanguageProperties . CSharp , lookInReferences ) ;
}
}
/// <summary>
/// Gets the position of a member in this project content (not a referenced one).
/// </summary>
/// <param name="fullMemberName">Fully qualified member name (always case sensitive).</param>
/// <param name="fullMemberName">The full member name in Reflection syntax (always case sensitive, ` for generics) </param>
public IDecoration GetElement ( string fullMemberName )
{
IClass curClass = GetClass ( fullMemberName , 0 , LanguageProperties . CSharp , false ) ;
IClass curClass = GetClassByDotNetName ( fullMemberName , false ) ;
if ( curClass ! = null ) {
return curClass ;
}
@ -865,7 +878,7 @@ namespace ICSharpCode.SharpDevelop.Dom
@@ -865,7 +878,7 @@ namespace ICSharpCode.SharpDevelop.Dom
if ( pos2 > 0 ) {
string className = memberName . Substring ( 0 , pos2 ) ;
memberName = memberName . Substring ( pos2 + 1 ) ;
curClass = GetClass ( className , 0 , LanguageProperties . CSharp , false ) ;
curClass = GetClassByDotNetName ( className , false ) ;
if ( curClass ! = null ) {
IMethod firstMethod = null ;
foreach ( IMethod m in curClass . Methods ) {
@ -885,6 +898,7 @@ namespace ICSharpCode.SharpDevelop.Dom
@@ -885,6 +898,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
}
return firstMethod ;
}
}
} else {
@ -892,7 +906,7 @@ namespace ICSharpCode.SharpDevelop.Dom
@@ -892,7 +906,7 @@ namespace ICSharpCode.SharpDevelop.Dom
if ( pos > 0 ) {
string className = fullMemberName . Substring ( 0 , pos ) ;
string memberName = fullMemberName . Substring ( pos + 1 ) ;
curClass = GetClass ( className , 0 , LanguageProperties . CSharp , false ) ;
curClass = GetClassByDotNetName ( className , false ) ;
if ( curClass ! = null ) {
// get first method with that name, but prefer method without parameters
IMethod firstMethod = null ;