ฉันพยายามรับ Unity เพื่อจัดการการสร้างวัตถุของฉันและฉันต้องการมีพารามิเตอร์การกำหนดค่าเริ่มต้นบางอย่างที่ไม่รู้จักจนกระทั่งเวลาใช้งาน:
ในขณะนี้วิธีเดียวที่ฉันสามารถคิดวิธีทำคือมีวิธี Init บนอินเทอร์เฟซ
interface IMyIntf {
void Initialize(string runTimeParam);
string RunTimeParam { get; }
}
จากนั้นให้ใช้ (ใน Unity) ฉันจะทำสิ่งนี้:
var IMyIntf = unityContainer.Resolve<IMyIntf>();
IMyIntf.Initialize("somevalue");
ในสถานการณ์สมมตินี้runTimeParam
จะกำหนดพารามิเตอร์ขณะใช้งานโดยยึดตามข้อมูลผู้ใช้ กรณีเล็ก ๆ น้อย ๆ ที่นี่เพียงคืนค่าrunTimeParam
แต่ในความเป็นจริงพารามิเตอร์จะเป็นชื่อไฟล์และวิธีการเริ่มต้นจะทำอะไรกับไฟล์
สิ่งนี้สร้างปัญหาจำนวนหนึ่ง ได้แก่ Initialize
วิธีนี้มีอยู่ในส่วนต่อประสานและสามารถเรียกได้หลายครั้ง การตั้งธงในการดำเนินการและการขว้างปาข้อยกเว้นในการเรียกซ้ำInitialize
ดูเหมือนว่าวิธีที่อุ้ยอ้าย
เมื่อถึงจุดที่ฉันแก้ไขอินเทอร์เฟซของฉันฉันไม่ต้องการรู้อะไรเกี่ยวกับการใช้งาน IMyIntf
เมื่อมาถึงจุดที่ผมแก้ไขอินเตอร์เฟซของฉันฉันไม่ต้องการที่จะรู้อะไรเกี่ยวกับการดำเนินงานของสิ่งที่ฉันต้องการคือความรู้ที่ว่าอินเตอร์เฟสนี้ต้องการพารามิเตอร์การกำหนดค่าเริ่มต้นที่แน่นอน มีวิธีการอย่างใดคำอธิบายประกอบ (คุณสมบัติ?) อินเตอร์เฟซที่มีข้อมูลนี้และส่งผ่านไปยังกรอบเมื่อวัตถุถูกสร้างขึ้น?
แก้ไข: อธิบายอินเตอร์เฟสอีกเล็กน้อย
runTimeParam
เป็นการอ้างอิงที่พิจารณา ณ รันไทม์ตามอินพุตของผู้ใช้ ทางเลือกสำหรับสิ่งนี้ควรแยกออกเป็นสองอินเตอร์เฟส - หนึ่งสำหรับการเริ่มต้นและอื่น ๆ สำหรับการจัดเก็บค่า?