如何在使用impromptu-interface時訪問鴨式代理對象。考慮我的代碼,說明我的榜樣,我得到了InvalidCastException
當我嘗試投我的鴨類型對象的代理對象:如何使用即興接口訪問代理對象
using System;
using ImpromptuInterface;
namespace ConsoleApplication1
{
public class Duck
{
public string Says { get; set; }
public int GetNumberOfQuacksPerMinute()
{
return 42;
}
}
public interface IPondBird
{
string Says { get; set; }
}
class Program
{
static void Main(string[] args)
{
// Duck says Quack! Quack!! Quack!!!
var thing = new Duck { Says = "Quack! Quack!! Quack!!!" };
IPondBird myInterface = Impromptu.ActLike(thing);
// ...
// Later on, I want to get access to a proxied object, but I
// get a InvalidCastException here
Duck proxiedObject = (Duck) myInterface;
Console.WriteLine("Duck # quacks per minute: "
+ proxiedObject.GetNumberOfQuacksPerMinute());
}
}
}
異常如下:
類型的「未處理的異常System.InvalidCastException」在ConsoleApplication1.exe中發生
其他信息:無法轉換類型 的對象‘ActLike_IPondBird_c7dd53902ec74f01a3844d4789244ea3’到類型 'ConsoleApplication1.Duck'。
你可以請你展示一下引導你相信這應該起作用的文檔嗎?這裏有一個誤解,文檔讓我更容易向你解釋。 –
看起來您可以使用'Impromptu.UndoActLike(myInterface)'獲取原始(包裹)對象。 –
@PieterWitvoet那也行,謝謝! – RedStar72