We recommend using Visual Studio 2017
This documentation is archived and is not being maintained.

PrivateObject.Invoke Method (String, BindingFlags, Type[], Object[], CultureInfo, Type[])

Used to access generic members of a private object.

Namespace:  Microsoft.VisualStudio.TestTools.UnitTesting
Assembly:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (in Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

public Object Invoke(
	string name,
	BindingFlags bindingFlags,
	Type[] parameterTypes,
	Object[] args,
	CultureInfo culture,
	Type[] typeArguments


Type: String

The name of the member to invoke.

Type: BindingFlags
Type: Type[]

An array of Type objects that represents the number, order, and type of the parameters for the method to access.


An empty array of the type Type (that is, Type[] types = new Type[0]) to get a method that takes no parameters.

Type: Object[]

Any arguments that the member requires.

Type: CultureInfo

The CultureInfo object that represents the globalization locale to use, which might be necessary for locale-specific conversions, such as converting a numeric String to a Double.


null to use the current thread's CultureInfo.

Type: Type[]

An array of type arguments to use when invoking a generic method.

Return Value

Type: Object

The following code is in the application that you are testing. It contains a generic method that you want to test, TestThisMethod<T>.

internal class Customer
    internal T TestThisMethod<T>(T value)
        return (value);

    public Customer()

The following code is a test method in your unit test. It shows how to pass a type argument, in the final Type[] parameter, when it invokes the method that you are testing:

public void TestSetCustomerId()
    PrivateObject po = new PrivateObject(typeof(Customer));

    int id = 100;

    int actual = (int)po.Invoke("TestThisMethod", new Type[] { typeof(int) }, new Object[] { id }, new Type[] { typeof(int) });

    Assert.AreEqual(actual, id);