المشاركات : 1,486
المواضيع 101
الإنتساب : Sep 2012
السمعة :
127
الشكر: 67
تم شكره 6159 مرات في 1035 مشاركات
04-05-17, 07:36 PM
(آخر تعديل لهذه المشاركة : 04-05-17, 07:49 PM {2} بواسطة silverlight.)
الموضوع ده تحديدا صداع كبير جدا
لكن
اسهل طريقة هي انك تبني ملفات dll و تقوم بتحويل تلك الملفات الي مصفوفة Byte ثم تحفظها في ملف عادي علي هيئة مصفوفة او تحفظ المصفوفة في ملف داتابيز مثلا
هذا الملف سيكون جزءا من برنامجك الرئيسي
ثم وحين تحتاج ملف dll معين تقرأ المصفوفة الخاصة به من الملف
و تمررها الي Assembly.Load وهي تقبل متغيرا عبارة عن مصفوفة Byte
بمجرد ان تفعل هذا سيكون ملف dll اصبح في ذاكرة الكمبيوتر
ثم بعد ان يكون الملف في ذاكرة الكمبيوتر هنا تحتاح ان تستخدم Assembly GetType بأن تمرر اسم اي كلاس تريد استخدامه حتي تحصل عليه من ملف dll
ولتفعل ذلك بسهولة أنت تحتاج الي كوبري يربط برنامجك مع ملف dll
هذا الكوبري سيكون عبارة عن Interface بين ملف dll و بين برنامجك
فقط المشكلة الوحيدة التي سوف تقابلك لاحقا هي أن ملف dll سيكون موجودا في الذاكرة الخاصة بالكمبيوتر أثناء تشغيل برنامجك
وهنا ما يمكن أن تخشاه هو شحترف جدا جدا الذي ربما يستطيع ان يحصل علي االكود الخاص بملف dll من الذاكرة
و الحل للهروب من تلك المشكلة هو ان تقوم بعمل Unload لملف dll الخاص بك او إنك تعمل Encrypt للذاكرة او انك تقرا و تكتب في الذاكرة الخاصة بالكمبيوتر
للأسف ان كل ملف dll قد يختلف عن الاخر بسبب اختلاف البيانات الموجودة فيه و بالتالي سيكون عليك ان تنفذ الفكرة اعلاه لكل ملف لوحده
عموما أنا لم أتعمق كثيرا في دراسة Assembly لكي أستطيع أن أجد علاقة ثابتة أستطيع من خلالها ان ابني كلاس عام ينفع مع اي ملف dll
أنا عارف ان كلامي قد يبدو غامضا او قد يبدو غير واضح جدا لك
لكن كلامي هذا هو الوحيد الذي يجيب علي سؤالك خاصة ان كنت تريد أن تكتب كل شئ بنفسك
أخر شئ و اسمح لي أقوله و هو يعبر عن رأي خاص بي شخصيا
المبرمجين خارج حدودنا العربية ب يتحدوا مع بعض لإيجاد حلول للمشاكل خاصة و ان كل مبرمج يكون قوي في جزئية معينة
لكن احنا العرب اتعودنا ان كل واحد بيقول نفسي ثم نفسي و بس
المشاركات : 575
المواضيع 116
الإنتساب : Feb 2014
السمعة :
28
الشكر: 377
تم شكره 440 مرات في 205 مشاركات
قد تقصر الحياة وقد تطول، فكل شيء مرهون بالطريقة التي نحياها بها
المشاركات : 1,486
المواضيع 101
الإنتساب : Sep 2012
السمعة :
127
الشكر: 67
تم شكره 6159 مرات في 1035 مشاركات
الأخ بداية
اولا :عليك ان تفتح مشروع عادي جدا
ثانيا: من قائمة File ..... أختار Add ....... ثم أختار New Project
ثم اختار من النافذة التي سوف تظهر لك مشروع من النوع Class Library و أعطه اسما مناسبا و ليكن الاسم مثلا BidayaGate
وهذا المشروع سوف تضف له مجموعة من Interface
بحيث أن كل Interface سيؤدي مهاما معينة و ان كنت لا تعرف كيف تكتب الكود الخاص بأي Interface عليك هنا أن تدرس كيف تفعل هذا
هذا المشروع سيعمل بمثابة الكوبري بين برنامجك الأصلي و بين الكود الفعلي الذي سيتم كتابته في الخطوة التالية
ثالثا: الأن تضيف Class Library أخر و هو الذي سيكون به الكود الفعلي
من قائمة File ..... أختار Add ....... ثم أختار New Project
ثم اختار من النافذة التي سوف تظهر لك مشروع من النوع Class Library و أعطه اسما مناسبا و ليكن الاسم مثلا Code[b]BidayaGate[/b]
باستخدم AddReference من قائمة Project عليك ان تضيف نسخة من Library الناتج من الخطوة الثانية بعد ان تكون عملت Build له
وتقوم بعمل Implementation لكل Interface موجود بها
و تكتب الكود في كلاسات مختلفة تناسب كل Interface
بعد أن تنتهي من هذه المراحل سوف أكمل لك ماذا سوف تفعل لاحقا