我將非通用存儲庫的測試移植到通用存儲庫。而不是使用Repo<MyType>
,我想用Repo<object>
或其他東西來測試更抽象的方法。如何創建匿名類,以便它可以傳遞給通用構造函數?
我試圖用匿名實例,但沒有奏效:
[Test]
public void AddToRepoIncrementsByOne()
{
IFile file = new FileFake();
IByteSerializer<object> serializer = new SerializerObjectFake();
repo = new WriteableFileRepository<object>(file, serializer);
var obj = new { Name = "test" };
repo.Add(obj);
Assert.True(repo.Items.Count() == 1);
Assert.AreEqual(repo.Items.Single().Name, obj.Nome);
//----------------------------------^^^^
//-------------------compiler error here
}
我試圖推斷對象的類引用,沒有成功過:
var obj = new { Nome = "teste" };
Type T = obj.GetType();
IArquivo arquivo = new ArquivoFake();
IByteSerializer<T> serializer = new SerializerObjectFake();
//--------------^
repo = new RepositórioArquivoEscrita<T>(arquivo, serializer);
我該如何解決這個問題?我沒有要求使用匿名對象,我只是認爲這將是一個讓我的測試運行的實用方法,但如果這不是一個好的設計,我肯定可以用其他方式來完成。
而不是'object'爲泛型類型,儘量使用'dynamic',你應該可以訪問你的財產'Name' –