PDA

View Full Version : سوال: using شرطي، (اجرا كد قبل از using)



mr.fatehi
دوشنبه 14 شهریور 1390, 17:43 عصر
با سلام خدمت دوستان عزيز
كدي نوشتم كه روي يك برنامه خارجي كار ميكنه
اما در ورژن هاي مختلف اون برنامه،اسم namespace اصلي عوض شده اند
بايد قبل از اجراي كد تشخيص بدم كدوم namespace رو Using كنم، اما راهش رو نميدونم
با دستورات if# و define# آشنا هستم اما بايد در شروع كد تشخيص ورژن رو بدم تا بتونم براي using ها شرط بذارم.

اگر راهنمايي كنيد ممنون ميشم

quantomquery
دوشنبه 14 شهریور 1390, 22:38 عصر
سلام
شما وقتی از یوزینگ استفاده میکنید مثلا :


using delta;


و بعدا از نیم اسپیس delta استفاده میکنید و یه کلاس رو فرض مثال نیو میکنید ( فرض میکنیم در نیم اسپیس delta یه کلاس به نام mydel داریم)مثلا :


mydel a=new mydel ();

خب این دقیقا شبیه اینه که بنویسیم :


delta.mydel a=new delta.mydel();

============================

یعنی اینکه شما نیم اسپیس رو اظافه نکنید و توی برنامه بعد از چک کردن شرط هاتون از کلاس های دلخواه استفاده کنین

linux
دوشنبه 14 شهریور 1390, 23:11 عصر
با سلام خدمت دوستان عزيز
كدي نوشتم كه روي يك برنامه خارجي كار ميكنه
اما در ورژن هاي مختلف اون برنامه،اسم namespace اصلي عوض شده اند
بايد قبل از اجراي كد تشخيص بدم كدوم namespace رو Using كنم، اما راهش رو نميدونم
با دستورات if# و define# آشنا هستم اما بايد در شروع كد تشخيص ورژن رو بدم تا بتونم براي using ها شرط بذارم.

اگر راهنمايي كنيد ممنون ميشم
یعنی شما برنامه برای وژن های مختلف می خواهید کامپایل کنید؟ مثلا برنامه شما در دو نسخه 32 بیتی و 64 بیتی توزیع خواهد شد؟

mr.fatehi
سه شنبه 15 شهریور 1390, 15:43 عصر
سلام
شما وقتی از یوزینگ استفاده میکنید مثلا :


using delta;


و بعدا از نیم اسپیس delta استفاده میکنید و یه کلاس رو فرض مثال نیو میکنید ( فرض میکنیم در نیم اسپیس delta یه کلاس به نام mydel داریم)مثلا :


mydel a=new mydel ();

خب این دقیقا شبیه اینه که بنویسیم :


delta.mydel a=new delta.mydel();

============================

یعنی اینکه شما نیم اسپیس رو اظافه نکنید و توی برنامه بعد از چک کردن شرط هاتون از کلاس های دلخواه استفاده کنین

ممنون از پاسختون
بنا به دلايلي (اينكه بايد چندتا شي كه زيرمجموعه اون نيم اسپيس هستند رو از كلاس اصلي به بقيه كلاسها پاس بدم ،و اينكه تعداد كلاسهاي مرتبط زياد هستند و دلايل ديگه) اينكار خيلي دردسر داره و جاهاي زيادي بايد چك بشه كه جالب هم از كار در نمياد.
اگر بتونيد يه راه ديگه پيشنهاد بديد ممنون ميشم

mr.fatehi
سه شنبه 15 شهریور 1390, 15:47 عصر
یعنی شما برنامه برای وژن های مختلف می خواهید کامپایل کنید؟ مثلا برنامه شما در دو نسخه 32 بیتی و 64 بیتی توزیع خواهد شد؟

نه اينطوري نيست
يه نرم افزار مهندسي رو از بيرون صدا ميزنم، و با دستورات API خود نرم افزار باهاش كار ميكنم
حالا در ورژن جديد اون نرم افزار نيم اسپيس اصلي تغيير نام داده!
كه من ميخوام برنامم روي هر دو ورژن كار كنه بدون اينكه بخوام برنامم رو دو تا كنم

linux
سه شنبه 15 شهریور 1390, 16:11 عصر
نه اينطوري نيست
يه نرم افزار مهندسي رو از بيرون صدا ميزنم، و با دستورات API خود نرم افزار باهاش كار ميكنم
حالا در ورژن جديد اون نرم افزار نيم اسپيس اصلي تغيير نام داده!
كه من ميخوام برنامم روي هر دو ورژن كار كنه بدون اينكه بخوام برنامم رو دو تا كنم
من فرض می کنم که شما می خواهید به کاربر نهایی امکانی بدهید که بتواند مشخص کند از کدام یک از ورژن های این نرم افزار استفاده می کند یا نهایتا هوشمندانه نرم افزار شما تشخیص می دهد که کدام ورژن از نرم افزار بر روی کامپیوتر کاربر نصب شده است و بر این اساس کار خواهد کرد،
در نتیجه به نظر من شما از یکی از الگوهای ایجادی مانند factory pattern باید استفاده کنید به هر حال کار شما سخت هست و برای هر دو نسخه هم باید کد بنویسید

mr.fatehi
چهارشنبه 16 شهریور 1390, 13:45 عصر
آخه كل برنامه و دستورات يكي هستش
فقط يه نيم اسپيس اصلي عوض ميشه
اگه درباره factory pattern يه توضيحي بديد ممنون ميشم

linux
چهارشنبه 16 شهریور 1390, 15:00 عصر
آخه كل برنامه و دستورات يكي هستش
فقط يه نيم اسپيس اصلي عوض ميشه
اگه درباره factory pattern يه توضيحي بديد ممنون ميشم

اینجا مطالعه کنید (http://www.dofactory.com/Patterns/PatternFactory.aspx)