हमारे उत्पाद में, हमारे पास "सेवाएं" नामक चीजें हैं जो उत्पाद के विभिन्न हिस्सों (और विशेष रूप से भाषाओं-इन-हाउस भाषा, सी, पायथन और .NET) के बीच संचार का मूल माध्यम हैं।मैं अपना खुद का प्रकार कैसे बदल सकता हूं?
वर्तमान में, कोड इस तरह है (Services.Execute
params object[] args
उपयोग):
myString = (string)Services.Execute("service_name", arg1, arg2, ...);
मैं नहीं बल्कि इस तरह कोड लिखने और प्रकार की जाँच और कम वर्बोज़ कोड के लाभ प्राप्त करने में सक्षम होना चाहते हैं:
myString = ServiceName(arg1, arg2, ...);
यह एक साधारण समारोह के साथ प्राप्त किया जा सकता है,
public static string ServiceName(int arg1, Entity arg2, ...)
{
return (string)Services.Execute("service_name", arg1, arg2, ...);
}
लेकिन यह वर्बोज़ है, और कई तरह की सेवाओं के लिए इसे करने के दौरान प्रबंधन करना बहुत आसान नहीं है, जैसा कि मैं करना चाहता हूं।
देखकर कैसे extern
और DllImportAttribute
काम करते हैं, मुझे आशा है कि यह इस तरह की कुछ भी तरह से इस हुक करने के लिए संभव होना चाहिए:
[ServiceImport("service_name")]
public static extern string ServiceName(int arg1, Entity arg2, ...);
लेकिन मैं कैसे सब पर इस लक्ष्य को हासिल करने के लिए जानते हैं और कर सकते हैं नहीं है ' प्रतीत होता है कि इसके लिए कोई दस्तावेज नहीं है (extern
एक काफी अस्पष्ट परिभाषित मामला प्रतीत होता है)। मैंने जो सबसे नज़दीकी पाया है वह कुछ हद तक संबंधित प्रश्न है, How to provide custom implementation for extern methods in .NET? जिसने वास्तव में मेरे प्रश्न का उत्तर नहीं दिया और वैसे भी कुछ अलग है। सी # भाषा विशिष्टता (विशेष रूप से, संस्करण 4.0 में, खंड 10.6.7, बाहरी तरीकों) मदद नहीं करता है।
तो, मैं बाहरी तरीकों का एक कस्टम कार्यान्वयन प्रदान करना चाहता हूं; क्या यह हासिल किया जा सकता है? और यदि हां, तो कैसे?
ऐसा करने का सबसे आम तरीका इंटरफेस और प्रॉक्सी रिमोटिंग के साथ है। – leppie
देखें http://stackoverflow.com/questions/7245507/how-to-provide-custom-implementation-for-extern-methods-in-net –
@PaulZahra: मैंने यह प्रश्न देखा है - मैंने इसे अपने प्रश्न में संदर्भित किया है –