Display com method signature with argument names (#9858)
This commit is contained in:
parent
1d2011fc22
commit
358d12ea93
|
@ -36,7 +36,11 @@ namespace System.Management.Automation
|
||||||
internal static string GetMethodSignatureFromFuncDesc(COM.ITypeInfo typeinfo, COM.FUNCDESC funcdesc, bool isPropertyPut)
|
internal static string GetMethodSignatureFromFuncDesc(COM.ITypeInfo typeinfo, COM.FUNCDESC funcdesc, bool isPropertyPut)
|
||||||
{
|
{
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
string name = GetNameFromFuncDesc(typeinfo, funcdesc);
|
|
||||||
|
// First value is function name
|
||||||
|
int namesCount = funcdesc.cParams + 1;
|
||||||
|
string[] names = new string[funcdesc.cParams + 1];
|
||||||
|
typeinfo.GetNames(funcdesc.memid, names, namesCount, out namesCount);
|
||||||
|
|
||||||
if (!isPropertyPut)
|
if (!isPropertyPut)
|
||||||
{
|
{
|
||||||
|
@ -46,7 +50,7 @@ namespace System.Management.Automation
|
||||||
}
|
}
|
||||||
|
|
||||||
// Append the function name
|
// Append the function name
|
||||||
builder.Append(name);
|
builder.Append(names[0]);
|
||||||
builder.Append(" (");
|
builder.Append(" (");
|
||||||
|
|
||||||
IntPtr ElementDescriptionArrayPtr = funcdesc.lprgelemdescParam;
|
IntPtr ElementDescriptionArrayPtr = funcdesc.lprgelemdescParam;
|
||||||
|
@ -85,6 +89,7 @@ namespace System.Management.Automation
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
builder.Append(paramstring);
|
builder.Append(paramstring);
|
||||||
|
builder.Append(" " + names[i + 1]);
|
||||||
|
|
||||||
if (i < funcdesc.cParams - 1)
|
if (i < funcdesc.cParams - 1)
|
||||||
{
|
{
|
||||||
|
|
|
@ -48,6 +48,14 @@ try {
|
||||||
[System.Object]::ReferenceEquals($element, $drives) | Should -BeFalse
|
[System.Object]::ReferenceEquals($element, $drives) | Should -BeFalse
|
||||||
$element | Should -Be $drives.Item($element.DriveLetter)
|
$element | Should -Be $drives.Item($element.DriveLetter)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
It "ToString() should return method paramter names" {
|
||||||
|
$shell = New-Object -ComObject "Shell.Application"
|
||||||
|
$fullSignature = $shell.AddToRecent.ToString()
|
||||||
|
|
||||||
|
$fullSignature | Should -BeExactly "void AddToRecent (Variant varFile, string bstrCategory)"
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Describe 'GetMember/SetMember/InvokeMember binders should have more restricted rule for COM object' -Tags "CI" {
|
Describe 'GetMember/SetMember/InvokeMember binders should have more restricted rule for COM object' -Tags "CI" {
|
||||||
|
|
Loading…
Reference in a new issue