Xamarin.Android
बाइंडिंग
खोज…
प्रकार निकालना
Xamarin.Android Bindings जनरेटर को निर्देश देना संभव है कि वह एक जावा प्रकार को अनदेखा करे और उसे बांधें नहीं। यह मेटाडेटा.xml फ़ाइल में एक remove-node
XML तत्व जोड़कर किया जाता है:
<remove-node path="/api/package[@name='{package_name}']/class[@name='{name}']" />
जावा इंटरफेस को लागू करना
यदि किसी java लाइब्रेरी में ऐसे इंटरफ़ेस होते हैं, जिन्हें उपयोगकर्ता द्वारा लागू किया जाना चाहिए (जैसे View.IOnClickListener
या callbacks जैसे क्लिक श्रोता), तो क्रियान्वयन वर्ग को Java.Lang.Object
या Java.Lang.Throwable
से - प्रत्यक्ष या अप्रत्यक्ष रूप से Java.Lang.Object
Java.Lang.Throwable
। यह एक सामान्य त्रुटि है, क्योंकि पैकेजिंग कदम केवल एक चेतावनी को प्रिंट करते हैं जिसे आसानी से अनदेखा किया जाता है:
टाइप करें 'MyListener' Android.untime.IJavaObject को लागू करता है लेकिन Java.Lang.Object से इनहेरिट नहीं करता है। यह समर्थित नहीं है।
गलत
इस कार्यान्वयन के उपयोग से अप्रत्याशित व्यवहार होगा।
class MyListener : View.IOnClickListener
{
public IntPtr Handle { get; }
public void Dispose()
{
}
public void OnClick(View v)
{
// ...
}
}
सही बात
class MyListener :
Java.Lang.Object, // this is the important part
View.IOnClickListener
{
public void OnClick(View v)
{
// ...
}
}
बाइंडिंग लाइब्रेरी के तरीकों और इंटरफेस का नाम बदल सकते हैं
बाइंडिंग लाइब्रेरी में सब कुछ C # में वैसा ही नहीं होगा जैसा कि जावा में होता है।
C # में, इंटरफ़ेस के नाम "I" से शुरू होते हैं, लेकिन जावा में ऐसा कोई सम्मेलन नहीं है। जब आप जावा लाइब्रेरी आयात करते हैं, तो SomeInterface
नाम का एक इंटरफ़ेस SomeInterface
बन ISomeInterface
।
इसी तरह, जावा में C # does जैसे गुण नहीं हैं। जब कोई लाइब्रेरी बंधी होती है, तो जावा गेट्टर और सेटर के तरीकों को गुणों के रूप में फिर से बनाया जा सकता है। उदाहरण के लिए, निम्नलिखित जावा कोड
public int getX() { return someInt; }
public int setX(int someInt) { this.someInt = someInt; }
के रूप में refactored जा सकता है
public int X { get; set; }
जब यह बाध्य है।