פורסם 2013 באוקטובר 2812 שנים ועוד שאלה בסדרת המעבר מפייתון ל-C#:אם אני לא יודע לומר מראש איזה סוג יוחזר ע"י פונקצייה מסויימת... מה מקובל לעשות? להחזיר object?בדוגמה למשל אני לא יודע אם יחזור לי OracleConnection או MSSQLConnection כי זה תלוי בקלט מהמשתמש. public string getOracleConnectionPath() { return "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST="+this.Host+")(PORT="+this.Port+"))(CONNECT_DATA=(SERVICE_NAME="+this.ServiceName+"))); User Id="+this.UserName+";Password="+this.Password+";"; } public OracleConnection makeOracleConnection() { return new OracleConnection(this.getOracleConnectionPath()); } public object connect() { if (this.DBType == "Oracle") return makeOracleConnection(); else if (this.DBType == "MSSQL") return makeMSSQLConnection(); else return makeOracleConnection(); } נערך 2013 באוקטובר 2812 שנים על-ידי TheAnthrax
פורסם 2013 באוקטובר 2812 שנים אתה מחזיר את המחלקה הכי ספציפית שעדיין מספיק גנרית לכל האפשרויות שלך.במקרה הנ"ל סביר להניח שאפשר לעשות משהו יותר ספציפי מObject. סביר להניח שגם לMSSQLConnection וגם לOracleConnection יש מחלקת אב משותפת איפשהו שאינה Object.
פורסם 2013 באוקטובר 2812 שנים מחבר כן מצאתי משהו משותף קרוב יותר..ואם כבר אני שואל - מה לגבי dynamic? איך עובדים עם זה?
פורסם 2013 באוקטובר 2812 שנים אל תעבוד עם זה. מתכון לצרות. (אם אתה רוצה אני אפרט יותר כשאני אהיה ליד מחשב) נערך 2013 באוקטובר 2812 שנים על-ידי שניצל
פורסם 2013 בנובמבר 912 שנים כן מצאתי משהו משותף קרוב יותר..ואם כבר אני שואל - מה לגבי dynamic? איך עובדים עם זה?dynamic משתמש ב reflection ומקמפל תוך כדי ריצה - מה שגורם לכמה צרות:1. אין לך תמיכה של intellisense, כי by definition אין לך מושג עם איזה אובייקט אתה עובד.2. הפיענוח של הקוד מתבצע בזמן ריצה ובאמצעות reflection - דבר שהוא נורא איטי.3. אם תקרא למתודה מסויימת באמצעות dynamic, ואז תעשה לך העמסה עם אותו מספר של פרמטרים, יש מצב יהיה שם בילבול בין ההעמסות ואתה תשב שעות בדיבאג.ד"א - לגבי החזרה של טיפוס לא ידוע, למה לא להשתמש ב generics?public static T ReturnUnknownType<T>(object param) נערך 2013 בנובמבר 912 שנים על-ידי avrahams1
פורסם 2013 בנובמבר 912 שנים במקרה הספציפי הזה אין סיבה אמיתית להשתמש ב-Generics. בסופו של דבר כשהוא עובד עם החיבור עצמו לא איכפת לו אם זה חיבור ל-MSSQL או ל-Oracle.
פורסם 2013 בנובמבר 912 שנים במקרה הספציפי הזה אין סיבה אמיתית להשתמש ב-Generics. בסופו של דבר כשהוא עובד עם החיבור עצמו לא איכפת לו אם זה חיבור ל-MSSQL או ל-Oracle.אם באמת יש מחלקת אב שמספקת את הפונקציונאליות אז צודק.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.