ฉันกำลังเริ่มแอปพลิเคชันเดสก์ท็อปใหม่และต้องการสร้างโดยใช้ MVVM และ WPF
ฉันตั้งใจจะใช้ TDD ด้วย
ปัญหาคือฉันไม่รู้ว่าฉันควรใช้คอนเทนเนอร์ IoC เพื่อฉีดการอ้างอิงกับรหัสการผลิตของฉันอย่างไร
สมมติว่าฉันมีคลาสและอินเทอร์เฟซต่อไปนี้:
public interface IStorage
{
bool SaveFile(string content);
}
public class Storage : IStorage
{
public bool SaveFile(string content){
// Saves the file using StreamWriter
}
}
แล้วฉันก็มีคลาสอื่นที่มีIStorage
การพึ่งพาสมมติว่าคลาสนี้เป็น ViewModel หรือชั้นธุรกิจ ...
public class SomeViewModel
{
private IStorage _storage;
public SomeViewModel(IStorage storage){
_storage = storage;
}
}
ด้วยสิ่งนี้ฉันสามารถเขียนการทดสอบหน่วยได้อย่างง่ายดายเพื่อให้แน่ใจว่าการทดสอบทำงานถูกต้องโดยใช้ล้อเลียนและอื่น ๆ
ปัญหาคือเวลาเอาไปใช้งานจริง ฉันรู้ว่าฉันต้องมีคอนเทนเนอร์ IoC ที่เชื่อมโยงการใช้งานเริ่มต้นสำหรับIStorage
อินเทอร์เฟซ แต่ฉันจะทำอย่างไร
ตัวอย่างเช่นจะเป็นอย่างไรถ้าฉันมี xaml ต่อไปนี้:
<Window
... xmlns definitions ...
>
<Window.DataContext>
<local:SomeViewModel />
</Window.DataContext>
</Window>
ฉันจะ 'บอก' WPF ให้ฉีดการอ้างอิงในกรณีนั้นอย่างถูกต้องได้อย่างไร?
นอกจากนี้สมมติว่าฉันต้องการอินสแตนซ์SomeViewModel
จากรหัส C # ของฉันฉันควรทำอย่างไร
ฉันรู้สึกว่าฉันหลงทางกับเรื่องนี้อย่างสิ้นเชิงฉันขอขอบคุณตัวอย่างหรือคำแนะนำว่าวิธีที่ดีที่สุดในการจัดการกับมันอย่างไร
ฉันคุ้นเคยกับ StructureMap แต่ฉันไม่ใช่ผู้เชี่ยวชาญ นอกจากนี้หากมีเฟรมเวิร์กที่ดีกว่า / ง่ายกว่า / นอกกรอบโปรดแจ้งให้เราทราบ