PDA

View Full Version : سوال: مشکل در ساخت نمونه از کلاس



jalil_m
سه شنبه 02 خرداد 1391, 14:56 عصر
سلام
من یه کلاس ساختم به اسم TestClass
دقیقا توی Namespace خود برنامه هست
حالا یه لیست از این کلاس رو

List<TestClass> parameter

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

Inconsistent accessibility: parameter type 'System.Collections.Generic.List<ProgramNamespace.TestClass>' is less accessible than method 'ProgramNamespace.Form1.Form1(System.Collections.G eneric.List<ProgramNamespace.TestClass>, int)

حتی وقتی یه تابع دیگه تعریف میکنم با این پارامتر ها بازم ارور میده و حتی پراپرتی هم تعریف میکنم همینه
اما وقتی داخل کدهای معمولی از این کلاس لیست تعریف میکنم هیچ خطایی نمیده
اینم بگم وقتی تو پارامتر حتی به جای لیست نمونه ساده هم تعریف میکنم بازم همین خطا رو میده
کسی میتونه کمک کنه؟

Saeed_m_Farid
سه شنبه 02 خرداد 1391, 18:44 عصر
تا اونجایی که من میدونم کلاس شما باید IEnumerable رو پیاده سازی کرده باشه تا بتونین اینطوری تو List ازش استفاده کنید. (IEnumerable Interface (http://msdn.microsoft.com/en-us/library/system.collections.ienumerable.aspx) کلاس People رو ببینید.)

jalil_m
سه شنبه 02 خرداد 1391, 18:57 عصر
نه مسئله اون نیست.یعنی همه جاهای دیگه استفاده میکنم هیچ مشکلی نیست.فقط وقتی میخوام ارسال کنم به یه فرم دیگه مثل بالا اینجوری میشه

Saeed_m_Farid
سه شنبه 02 خرداد 1391, 18:57 عصر
خطای شما میگه نمی تونه TestClass رو به نوع int تبدیل (cast) کنه؛ این نشون میده که سازنده کلاس List کلاس شما رو بعنوان collection نمی شناسه (چون کلاس شما 100% از IEnumerable ارث نبرده) پس اون رو بعنوان int capacity میشناسه و سعی میکنه اون سازنده رو فراخوانی کنه و به int تبدیلش کنه!

یعنی بین سازنده های List سومی رو فراخوانی میکنه:

public List();
public List(IEnumerable<T> collection);
public List(int capacity);


TestClass رو اینجا کپی کنید تا بهتر بشه گفت

jalil_m
سه شنبه 02 خرداد 1391, 19:09 عصر
این تعریف کلاس هست


class TestِClass
{
public int ID { get; set; }
public int Number { get; set; }
public string Key { get; set; }
}

jalil_m
سه شنبه 02 خرداد 1391, 19:10 عصر
اون int که تو ارور هست پارامتر دوم سازنده فرم هست
این ارور فکر کنم مشکل سطح دسترسی به کلاسها رو میگه.اینطور نیست؟
چیکار میشه کرد؟

jalil_m
سه شنبه 02 خرداد 1391, 20:49 عصر
کسی نمیتونه کمک کنه؟

jalil_m
سه شنبه 02 خرداد 1391, 21:48 عصر
دوستان اگه کسی میتونه کمک کنه کارم گیره

Mahmoud.Afrad
سه شنبه 02 خرداد 1391, 22:30 عصر
کلاس رو پابلیک کنید مشکل حل میشه
public class TestClass
{
protected internal int ID { get; set; }
protected internal int Number { get; set; }
protected internal string Key { get; set; }
}

jalil_m
سه شنبه 02 خرداد 1391, 23:18 عصر
بله حل شد ممنون

a_saeedsg
جمعه 03 اردیبهشت 1395, 13:28 عصر
کلاس رو پابلیک کنید مشکل حل میشه
public class TestClass
{
protected internal int ID { get; set; }
protected internal int Number { get; set; }
protected internal string Key { get; set; }
}
آقا جواب عالی بود دمت گرم مشکل منم حل شد