So che questa è una vecchia questione e risposte, ma mi sono imbattuto in questo su questo cercando di fare esattamente la stessa cosa per alcuni test di unità. Mi sono poi reso conto che sto già facendo qualcosa del genere usando Moq (facepalm).
Mi piace l'altro suggerimento per ImpromptuInterface ma sto già usando Moq e sento che avere un seguito più ampio (che è opinione e non fatto) sarà più stabile e supportato più a lungo.
quindi per questo caso sarebbe qualcosa di simile
public interface ICoOrd
{
int X { get; set; }
int Y { get; set; }
}
public class Sample
{
public void Test()
{
var aCord = new Mock<ICoOrd>();
aCord.SetupGet(c => c.X).Returns(44);
aCord.SetupGet(c => c.Y).Returns(55);
var a = aCord.Object;
}
}
EDIT: semplicemente aggiungendo un altro modo per deridere il cavo, ha iniziato facendo in questo modo e, come un po 'meglio.
public void AnotherTest()
{
var aCord = Mock.Of<ICoOrd>(c => c.X == 44 && c.Y == 55);
//do stuff with aCord
}
Sono solo curioso: cosa stai cercando di fare che richiederebbe di fare questo? Se conosci l'interfaccia, sai chiaramente quale funzionalità ha l'interfaccia, quindi puoi implementare una classe per fornire quella funzionalità, nel qual caso non hai più bisogno di un tipo anonimo, dato che puoi semplicemente creare un'istanza della tua classe. – xxbbcc
Perché il tuo cast dovrebbe essere anonimo (non ci si "interessa" del suo design) a un'interfaccia (il che significa che si "cura" del suo design)? – gdoron
@gdoron: un'interfaccia è una cosa utile da avere, e ho trovato che un buon uso dei tipi anon (nessun LINQ in questo caso) ha semplificato il mio codice * e * aiutato a rendere più chiara l'intenzione. Questa è la motivazione. Principalmente a che fare con strutture intermedie. – sgtz