Как получить доступ к доверенному объекту Duck Typed при использовании 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