簡體   English   中英

AutoFixture:如何從System.Type創建CreateAnonymous

[英]AutoFixture: how to CreateAnonymous from a System.Type

我只需要使用System.Type從AutoFixture創建一個對象。 但是,似乎沒有CreateAnonymous()的重載只是一個類型。 他們都期望編譯時通用T.有沒有辦法將System.Type轉換為T?

編輯使用細節:

我正在使用AutoMapper,它有一個用於注入組件的鈎子,以支持復雜的映射場景:

void ConstructServicesUsing(System.Func<Type,object> constructor)

從簽名中可以看出,客戶端可以注冊一個Func ,AutoMapper會在需要注入服務時調用它(主要是ValueResolver實現)。

在生成版本中,此方法調用我的StructureMap容器​​來檢索組件。 但是,在單元測試我的映射代碼時,我必須提供存根實現,否則AutoMapper會拋出異常。 由於我使用AutoFixture + Moq作為我的自動鎖定容器,因此讓AF新建一個完全水合的存根似乎很自然,所以我可以集中精力編寫單元測試代碼。

這是可能的 ,但故意隱藏,因為你應該很少需要這樣做:

var specimen = new SpecimenContext(fixture).Resolve(type);

AutoFixture中有大量的可擴展點,通常比弱類型的Create方法提供更好的替代方案。 你想達到什么目的?

您必須使用反射來創建正確的MethodInfo並調用它。 請參閱以下答案: 如何使用給定的Type對象調用泛型方法?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM