public IntPtr GetParameterText( int method, int parameter, ParameterTextType type ){ if (this.methods == null) return IntPtr.Zero; if (method < 0 || method >= GetOverloadCount()) return IntPtr.Zero; if (parameter < 0 || parameter >= GetParameterCount( method )) return IntPtr.Zero; string name; string description; string display; this.methods.GetParameterInfo( method, parameter, out name, out display, out description ); string result = null; switch (type) { case ParameterTextType.PTT_NAME: result = name; break; case ParameterTextType.PTT_DESCRIPTION: //result = description; break; case ParameterTextType.PTT_DECLARATION: result = display; break; default: break; } return result == null ? IntPtr.Zero : Marshal.StringToBSTR(result); }
private static int IndexOfParameterTextType(ParameterTextType parameterTextType) { switch (parameterTextType) { case ParameterTextType.PTT_DECLARATION: return 0; case ParameterTextType.PTT_DESCRIPTION: return 1; case ParameterTextType.PTT_NAME: return 2; } throw new ArgumentOutOfRangeException("parameterTextType"); }
public IntPtr GetOrCreateParameter(int index, ParameterTextType parameterTextType, Func<string> factory) { var p = parametersCache[index] ?? (parametersCache[index] = new NativeStringsCacheForParameter()); return p.GetOrCreate(parameterTextType, factory); }
public IntPtr GetOrCreate(ParameterTextType parameterTextType, Func<string> factory) { return nativeStringCache.GetOrCreateStringPointer(IndexOfParameterTextType(parameterTextType), factory); }
public IntPtr GetParameterText(int method, int parameter, ParameterTextType type) { if (this.methods == null) return IntPtr.Zero; if (method < 0 || method >= GetOverloadCount()) return IntPtr.Zero; if (parameter < 0 || parameter >= GetParameterCount(method)) return IntPtr.Zero; var overload = nativeStringsCacheForOverloads.GetOverload(method); return overload.GetOrCreateParameter( parameter, type, () => { string name; string description; string display; this.methods.GetParameterInfo(method, parameter, out name, out display, out description); switch (type) { case ParameterTextType.PTT_NAME: return name; case ParameterTextType.PTT_DESCRIPTION: return description; case ParameterTextType.PTT_DECLARATION: return display; default: throw new ArgumentOutOfRangeException("type"); } } ); }