从我读到的内容中,我可以为PrivateObject
对象中的参数传递一个对象。该代码在说明中给出了错误。
[TestMethod]
public void TestMethod1()
{
MessageToSend message = new MessageToSend();
Sender sender = new Sender(null, null, null);
var dto = new DateTimeOffset();
PrivateObject pObj = new PrivateObject(typeof(Sender));
Object[] args = new Object[] { "Hello", "Marc", "Perry", dto };
string result = pObj.Invoke("ParseBody", args);
}
错误
无法将类型对象隐式转换为字符串
它正在调用的方法是
private string ParseBody(string sBody, string sFirstName, string sLastName, DateTimeOffset? tSourceTimeInfo)
答案 0 :(得分:5)
PrivateObject.Invoke
method接受object[]
个参数并返回object
,因此它可以应付大多数情况。编译器不信任object
是string
,因为虽然在运行时可能是正确的,但对于编译器来说却并非如此。
所以...您需要显式投射:
string result = (string)pObj.Invoke("ParseBody", args);