Wie erhalte ich Zugriff auf das Proxy-Objekt Duck Typed, wenn impromptu-interface verwendet wird. Sehen Sie meinen Code, dass mein Beispiel zeigt, wo ich eine InvalidCastException
, wenn ich versuche, meine Ente typisierte Objekt zum proxied Objekt zu werfen:Zugriff auf Proxy-Objekt über die Impromptu-Schnittstelle
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());
}
}
}
Ausnahme ist wie folgt:
Eine nicht behandelte Ausnahme des Typs ' System.InvalidCastException‘aufgetreten in ConsoleApplication1.exe
Zusätzliche Informationen: Kann nicht das Objekt vom Typ werfen 'ActLike_IPondBird_c7dd53902ec74f01a3844d4789244ea3' eingeben 'ConsoleApplication1.Duck'.
Können Sie bitte den Teil der Dokumentation zeigen, der Sie glauben lässt, dass dies funktionieren sollte? Es gibt irgendwo ein Missverständnis und die Dokumentation erlaubt es mir, es Ihnen leichter zu erklären. –
Es sieht so aus, als könnten Sie 'Impromptu.UndoActLike (meinInterface)' verwenden, um das ursprüngliche (umgebrochene) Objekt zurück zu bekommen. –
@PieterWitvoet Das funktioniert auch, danke! – RedStar72