PDA

View Full Version : ارسال پارامتری از نوع کلاس به متد



S_VB.max
دوشنبه 02 خرداد 1390, 15:46 عصر
سلام
چطوری می تونم یک پارامتر از نوع کلاس را به یک متد ارسال کنم؟

sinashahab
دوشنبه 02 خرداد 1390, 16:45 عصر
كافيه نوع كلاس رو به عنوان ورودي بگيره. مثلا : اسم كلاس باشه=Calculator
void ssh (string bargard , Calculator naintor)
{
Your Code
}


طرز فرستادن هم :
Calculator create
ssh("alireza" , create);

محسن شامحمدی
دوشنبه 02 خرداد 1390, 16:47 عصر
دقیقا همونطوری که انواع دیگه رو به متدها پاس می دید.
مثل این:
یک کلاس بسازید با نام Class1

حالا این کدها رو بنویسید

private void Form1_Load(object sender, EventArgs e)
{
a(new Class1());
}

void a(Class1 b)
{

}

S_VB.max
دوشنبه 02 خرداد 1390, 17:49 عصر
دو تا شی دارم از نوع کلاس Form می خوام اسم متغیر را به همراه نام کلاس مربوط به خودش به متد ارسال کنم تا بتونم فرمها را نمایش بدم

دستورات زیر را چکارش کنم تا درست کار کنه


private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = null;
Form3 frm3 = null;

myMethod(frm2,Form2);
myMethod(frm3, Form3);
}



private void myMethod(System.Windows.Forms f, System.Windows.Forms c)
{
f=new c;
f.Show();
}

Reza_Yarahmadi
دوشنبه 02 خرداد 1390, 18:45 عصر
برای کاری که شما میخواید انجام بدید فکر کنم بهترین راه استفاده از جنریک است.
به صورت زیر عمل کنید:
class MyClass<T> where T : new()
{
public static void MyMethod(Object f)
{
f = new T();
if (f is Form)
(f as Form).Show();
}
}
زمان استفاده هم بصورت زیر :
Form2 f2 = null;
MyClass<Form2>.MyMethod(f2);

البته از رفلکشن هم میتونید استفاده کنید
public void MyMethod(Form f, Type t)
{
f = (Form)t.GetConstructors()[0].Invoke(new object[0]);
f.Show();
}
Form2 f2 = null;
MyMethod(f2, typeof(Form2));