我有一個定義如下的泛型方法,它包裝了對AutoMapper的調用。通過Roslyn檢查Automapper的使用情況
public TOut CreateRequest<TOut, TModelIn>(TModelIn data)
{
...
return Mapper.Map<TModelIn, TOut>();
}
如果我打電話Mapper.AssertConfigurationIsValid
然後我可以檢查我的地圖是設置正確,但是我沒有檢查的方法是有人添加了一行代碼時已經沒有定義地圖嘗試的地圖。
所以我希望能夠掃描我的程序集並找到所有對上述方法的調用,提取正在使用的泛型類型,然後將這些類型連接到Mapper.Map<Type1, Type2>();
調用中。然後我可以調用Mapper.AssertConfigurationIsValid
方法,並確保我的代碼中的所有地圖確實已被映射並且是有效的。
想法是將此添加到UnitTest中,以便我可以確定映射,然後讓用戶去測試它,看看會發生什麼。
[更新] 我一直在尋找在我的單元測試中使用Roslyn來做到這一點。有誰知道如何通過Roslyn找到對方法的調用,既有直接調用,也有通過參數列表?
你可以在visual studio中找到所有方法的正則表達式(或者是懶,只需找到'CreateRequest <') –
我需要這個在單元測試中自動運行,而不是手動運行。 – Nick
我不確定你可以更改哪部分代碼。你能修改通用方法嗎?如果可以的話,我會建議啓用自動測試功能,嵌入到方法中。如果你願意的話,我可以嘗試闡述一個答案。 –