الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كبف أمنع الوصول لداله معينه

مغلق
بدأه mhewedy في 17 يونيو 2007 · 13 رد · 728 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أنا عاوز أمنع دوال معينه من أن تستدعي من خارج ال namespace ، هل أحزف ال public المواجهه لها

مثال :

using System;

namespace Firstns{

	public class Hello {
		public void print (){
			Console.WriteLine ( "hello ");
		}

		void print ( String str){
			Console.WriteLine ( str );
		}
	}
}

using System;
using Firstns;

namespace test {
	public class Main {
		static void Main (String[] args ){

			Hello h = new Hello();
			h.print ();
			h.print ("Al salamo 3alykom"); // will generate an error
		}
	}
}

هل هذا الكلام صحيح ؟؟؟

#2

بحذف الpublic انت كدة خليتها private لأن هو ده المستوى الdefault في السي شارب

أي أنها لن يمكن حتى استدعائها من خارج الclass وليس خارج الnamespace فقط

أما بالنسبة لكيفية تنفيذ طلبك تحديدا ... فلا أعرفه :^)

#3

الآن Print التي تأخذ بارامتر لن يشاهدها أحد خارج الكلاس Hello لأنها private بطريقة تلقائية كما أشار الأخ حسان. ( كان ينبغي عليك كتابتها private بطريقة صريحة من أجل المقروئية ( ليستطيع البشر فهمها بمجرد النظر ) ).

أيضا اذا كنت تبرمج DLL فانظر إلى استخدامات كلمة internal الذي تمنع الوصول إلى الـ Types من خارج الـ DLL.

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#4

أنا موش ببرمج DLL ، أنا عمل شويق كلاسس و هستخدمهمه من الكود بتاعهم،

يعني هفتح مشروع جديد و أعمل فيه ٢ namespaces ، واحد فيه ال classes و التاني فيه ال webpages ( أصلي شغال asp )

فعاوز - عشان تنظيم الشغل - موش كل الدوال ف الكلاسس ف ال namespace الأول تظهر ف ال webpages ،،،

أعتقد أن internal زي ال default access modifier ف الجافا صح ؟؟

#5

أنا مش بعرف جافا.

لكن ماذا تقصد بـ "فعاوز - عشان تنظيم الشغل - موش كل الدوال ف الكلاسس ف ال namespace الأول تظهر ف ال webpages" ؟

في السي شارب يجب أن تكون كل الدوال داخل Class أو Struct. لا يصلح أن تكتب دوال داخل الـ namespace.

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#6

أنا فاهم ، أنا قصدي :

عشان مخليش الناس اللي بتكتب ال asp معتمدين علي ال namespace اللي معمول بال c# يشوفو كل الدوال ، بس يشوفو الدوال المفروض يستخدموها

#7

أيوا اعمل الدوال كلها اللي المفروض مايشوفوهاش private زي مانت عاملها كدا :D

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#8

منتش فهمني برضه، أنا عاوز الكلاسس في نفس الnamespace يشفوهه، أما ال classes اللي خارج ال namespace لأ.

#9

لا أعتقد أن هذا ممكن بأي حال من الأحوال... الطريقة الوحيدة التي اقترحها الأخ معتز تصلح لتتحايل على ذلك... انت قلت الناس اللي هتبرمج بناء على الnamespace دي.. والجملة دي كافية لأنك تعملها DLL... فافصل الnamespace اللي فيه الدوال اللي بتنفذ الوظائف الأساسية في مشروع project منفصل نوعه Class Library... وحينها يمكنك استخدام internal وستؤدي الغرض الذي أردته بالظبط

وحينها يمكن لمن يريد استخدام الnamespace أن يقوم بإضافة الDLL الذي قمت بإنتاجه انت في الreferences الخاصة بمشروعه

#10

جزالك الله خيرا أخي و كذا الأخ معتز

بس عندي تسلؤل ، أيه الفرق من أنا أفصلها عن إني لا أفصلها؟

مش المهم إني نستخدم namespace و خلاص ؟؟

جزاكم الله خيرا، و أخيرا : هل ال dll الناتج يحتوي علي كل ال classes الموجوده ف ال namespace ؟

أنا كنت عاوز أعمل زي ما بالصوره، عشان أي تغيير أعمله ف ال namespace يتعكس ف البرنامج اللي بيعتمد عليها مباشرة

post-70497-1182104143_thumb.png

#11

مبتدئ جافا كتب:
جزالك الله خيرا أخي و كذا الأخ معتز

بس عندي تسلؤل ، أيه الفرق من أنا أفصلها عن إني لا أفصلها؟

مش المهم إني نستخدم namespace و خلاص ؟؟

لا.. لأن

internal

تعريفها بأنها

restrict access to classes only in the current assembly

وليس namespace

اقتباس
جزاكم الله خيرا، و أخيرا : هل ال dll الناتج يحتوي علي كل ال classes الموجوده ف ال namespace ؟

الdll هو هو المشروع ... لكن الفارق أنه لا يتم تنفيذه أي أنه لا يحتوي على دالة Main... أي أنه يتم استخدامه في مشروعات كأداة مساعدة.. لكنه ليس برنامج قائم بذاته

اقتباس
أنا كنت عاوز أعمل زي ما بالصوره، عشان أي تغيير أعمله ف ال namespace يتعكس ف البرنامج اللي بيعتمد عليها مباشرة

لم أفهم هذه النقطة

#12
اقتباس
الdll هو هو المشروع ... لكن الفارق أنه لا يتم تنفيذه أي أنه لا يحتوي على دالة Main... أي أنه يتم استخدامه في مشروعات كأداة مساعدة.. لكنه ليس برنامج قائم بذاته

جزاك الله خيرا، أنا لم أقصد هذا بل قصدت هل لكل class ف المشروع بيكون ملف dll أم لكل المشروع ملف واحد بيحوي جميع الclasses ؟؟

#13

كل المشروع بيخزن في dll واحدة.... تحتوي على الnamespaces وال classes مثلها مثل باقي المشاريع في dll واحد

#14

جزاك الله خيرا

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…