मेरे पास कई अनुबंधों के साथ एक सेवा है।डब्ल्यूसीएफ डुप्लिकेट विधि नामों के साथ एकाधिक अनुबंध
[ServiceContract]
public partial interface IBusinessFunctionDAO {
[OperationContract]
BusinessFunction GetBusinessFunction(Int32 businessFunctionRefID);
[OperationContract]
IEnumerable<Project> GetProjects(Int32 businessFunctionRefID);
}
[ServiceContract]
public partial interface IBusinessUnitDAO {
[OperationContract]
BusinessUnit GetBusinessUnit(Int32 businessUnitRefID);
[OperationContract]
IEnumerable<Project> GetProjects(Int32 businessUnitRefID);
}
मैंने स्पष्ट रूप से इस तरह के इंटरफ़ेस में से प्रत्येक को स्पष्ट रूप से कार्यान्वित किया।
public class TrackingTool : IBusinessFunctionDAO, IBusinessUnitDAO {
BusinessFunction IBusinessFunctionDAO.GetBusinessFunction(Int32 businessFunctionRefID) {
// implementation
}
IEnumerable<Project> IBusinessFunctionDAO.GetProjects(Int32 businessFunctionRefID) {
// implementation
}
BusinessUnit IBusinessUnitDAO.GetBusinessUnit(Int32 businessUnitRefID) {
// implementation
}
IEnumerable<Project> IBusinessUnitDAO.GetProjects(Int32 businessUnitRefID) {
// implementation
}
}
आप देख सकते हैं मैं दो GetProjects (int) तरीके है, लेकिन हर एक को स्पष्ट रूप से कार्यान्वित किया जाता है तो यह ठीक संकलित करता है तथा पूरी तरह से वैध है। समस्या तब उत्पन्न होती है जब मैं वास्तव में इसे एक सेवा के रूप में शुरू करता हूं। यह मुझे एक त्रुटि देता है कि TrackingTool में पहले से ही GetProject परिभाषा है। हालांकि यह सच है, यह एक अलग सेवा अनुबंध का हिस्सा है। विधि नाम उत्पन्न करते समय डब्ल्यूसीएफ सर्विस अनुबंधों के बीच अंतर नहीं करता है? क्या यह सेवा अनुबंधों के बीच अंतर करने का कोई तरीका है?
मेरे app.config इस
<service name="TrackingTool">
<endpoint address="BusinessUnit" contract="IBusinessUnitDAO" />
<endpoint address="BusinessFunction" contract="IBusinessFunctionDAO" />
</service>
किसी भी मदद की सराहना की जाएगी तरह दिखता है।
धन्यवाद, राउल
@monO के रूप में उनके उत्तर में उल्लेख किया गया है - वास्तविक व्यक्तिगत विधि नाम आपकी सेवा कक्षा में अद्वितीय होना चाहिए। डब्ल्यूएसडीएल आपके इंटरफेस और सब कुछ के बारे में कुछ भी नहीं जानता है और यह विभिन्न पैरामीटर के साथ विधि अधिभार की अनुमति नहीं देता है; आपको उन सेवा नामों को संपूर्ण सेवा कक्षा में अद्वितीय बनाने की आवश्यकता है! –
आह, मुझे लगता है कि मुझे डब्लूएसडीएल वास्तव में कैसे बनाया गया है इस पर पढ़ना होगा। मैंने सोचा कि प्रत्येक अनुबंध के पास डब्लूएसडीएल के अंदर अपना नामस्थान है। – HaxElit
... असल में मुझे लगता है कि यह भी बहुत भ्रमित है। @marc_s: डब्ल्यूएसडीएल विभिन्न इंटरफेस के बारे में जानता है। उन्हें समर्पित बाइंडिंग के साथ समर्पित बंदरगाहों के रूप में उजागर किया जाता है। – Alex