PDA

View Full Version : گرفتن مقدار یکی از پارامترهای کلاس با استفاده از نام به صورت string



meysam_online2012
سه شنبه 13 تیر 1396, 10:09 صبح
سلام دوستان

من یه کلاس دارم که یه سری فیلد ها داخلش هست

همین فیلد هارو داخل یه فایل xml هم ذخیره کرده

حالا میخوام نام هر فیلد رو که از فایل میخونم که به صورت یه رشته هست رو تو برنامه مقداری که داخل فیلد هست رو بدست بیارم

ممنونم

shahryari
سه شنبه 13 تیر 1396, 10:19 صبح
سلام دوستان

من یه کلاس دارم که یه سری فیلد ها داخلش هست

همین فیلد هارو داخل یه فایل xml هم ذخیره کرده

حالا میخوام نام هر فیلد رو که از فایل میخونم که به صورت یه رشته هست رو تو برنامه مقداری که داخل فیلد هست رو بدست بیارم

ممنونم

کجاش مشکل داری؟ خوندن از اگزمل؟

meysam_online2012
سه شنبه 13 تیر 1396, 10:24 صبح
کجاش مشکل داری؟ خوندن از اگزمل؟


نه دوست عزیز

فرض کن ورودی تابع من یه کلاسه با سه تا پارمتر که دوتا از این پارامترها اسمشونو تو یه فایل xml ذخیره کردم

حاالا اسم این دوتا پارامترو از xml میخونم و میخوام پارامترهای کلاس که به این اسم هستن مقدارشونو بفرستم به خروجی

نمیدونم منظورمو رسوندم یا نه

ممنونم

shahryari
سه شنبه 13 تیر 1396, 10:30 صبح
نه دوست عزیز

فرض کن ورودی تابع من یه کلاسه با سه تا پارمتر که دوتا از این پارامترها اسمشونو تو یه فایل xml ذخیره کردم

حاالا اسم این دوتا پارامترو از xml میخونم و میخوام پارامترهای کلاس که به این اسم هستن مقدارشونو بفرستم به خروجی

نمیدونم منظورمو رسوندم یا نه

ممنونم

یه کلاس بنویس تو سازنده اش مسیر اگزمل رو بخاد
فیلد هاتو بصورت پابلیک تعریف کن
تو همون تابع سازنده ، مقادیر رو بگیر و به فیلدهات مقدار بده
همین

meysam_online2012
سه شنبه 13 تیر 1396, 10:39 صبح
یه کلاس بنویس تو سازنده اش مسیر اگزمل رو بخاد
فیلد هاتو بصورت پابلیک تعریف کن
تو همون تابع سازنده ، مقادیر رو بگیر و به فیلدهات مقدار بده
همین


فکر کنم منظورمو نرسوندم

ببین من مشکلی بامقدار دهی کلاس و خوندن از xml ندارم

ببین فرض کن یه کلاس مثه این داریم


public class tmp
{
public string a{get;set;}
public int b{get;set;}
}


حالا یه string هم داریم به اینصورت

string c="a";


مقدار داخل متغیر c اسم یکی از پارامترهای کلاس tmp هستش.

حالا من میخوام بدونم چطوری مقدار داخل پارامتر a رو بخونم با استفاده از مقداری که داخل متغیر c هستش؟؟؟

shahryari
سه شنبه 13 تیر 1396, 10:54 صبح
چرا اینجوری پس؟
بنویس
string c = temp.a;
وخودتو خلاص کن;

meysam_online2012
سه شنبه 13 تیر 1396, 10:59 صبح
دوست عزیز ممنونم که پیگیری میکنی

ولی کلا من یه چیز دیگه میخوام

متغیر c مشخص میکنه که من مقدار کدوم پارامتر رو بخونم ممکنه داخل c پارامتر a یا شاید b باشه

در واقع من میخوام با اسم پارامتر که بهصورت string هستش مقدار داخلشو بدست بیارم

بازم ممنون

shahryari
سه شنبه 13 تیر 1396, 11:08 صبح
اون وقت باید کلا یه کار دیگه بکنی،
بجای متغیر "A" اسم تگ مورد نظر در اگزمل رو بفرستی به کلاس و مقدارشو بخونی

<datatable>
<a>ali shahryari</a>
<b>1362/03/25</b>
</datatable>

meysam_online2012
سه شنبه 13 تیر 1396, 11:15 صبح
اون وقت باید کلا یه کار دیگه بکنی،
بجای متغیر "A" اسم تگ مورد نظر در اگزمل رو بفرستی به کلاس و مقدارشو بخونی

<datatable>
<a>ali shahryari</a>
<b>1362/03/25</b>
</datatable>


بازم ممنون

اینجوری فرض کن من یه تابع دارم که کلاس tmp ورودیشه

من اینجور کدی میخوام


("a").getvalue();


یعنی به جای tmp.a کد بالا رو بنویسم
a رو به صورت استرینگ بدم

shahryari
سه شنبه 13 تیر 1396, 11:37 صبح
بازم ممنون

اینجوری فرض کن من یه تابع دارم که کلاس tmp ورودیشه

من اینجور کدی میخوام


("a").getvalue();


یعنی به جای tmp.a کد بالا رو بنویسم
a رو به صورت استرینگ بدم

خب منم همونو میگم، تگ های داخل اگزمل (اسمهاش، ولیوهاش نه) رو بده ، در دخل تابعت برشگردون

class temp
{
public string getValue(string tag)
{
DataTable dt = new DataTable("myDB");
dt.Columns.Add("a");
dt.Columns.Add("b");
dt.ReadXml("test.xml");
string value = "" ;
value = dt.Rows[0][tag].ToString();
return value;
}
}

private void button2_Click(object sender, EventArgs e)
{
temp tmp = new temp();
string c = tmp.getValue("a");
}



اینم اگزمل:
<?xml version="1.0" standalone="yes"?>
<DocumentElement>
<myDB>
<a>ali shahryari</a>
<b>1362/03/25</b>
</myDB>
</DocumentElement>

کلاس temp ویرایش شد، نیازی به حلقه و شرط نبود

محمد آشتیانی
چهارشنبه 14 تیر 1396, 08:44 صبح
سلام

این کلاس رو در نظر بگیرید

public class Sample
{
public int SampleProperty { get; set; }


public int SampleField;


public Sample(int input)
{
SampleProperty = input;
SampleField = input;
}
}



کدی که شما نیاز دارید:

var sample = new Sample(51);


//برای گرفتن مقدار پراپرتی با نام
var propertyValue = sample.GetType().GetProperty("SampleProperty").GetValue(sample, null).ToString();


//برای گرفتن مقدار فیلد با نام
var fieldValue = sample.GetType().GetField("SampleField").GetValue(sample).ToString();



نام هایی که بعنوان پارامتر جلوی متدهای GetProperty و GetField نوشته شدن رو شما تعیین می کنید (شما از فایل xml می خونید)



موفق باشید

meysam_online2012
چهارشنبه 14 تیر 1396, 09:17 صبح
سلام

این کلاس رو در نظر بگیرید

public class Sample
{
public int SampleProperty { get; set; }


public int SampleField;


public Sample(int input)
{
SampleProperty = input;
SampleField = input;
}
}



کدی که شما نیاز دارید:

var sample = new Sample(51);


//برای گرفتن مقدار پراپرتی با نام
var propertyValue = sample.GetType().GetProperty("SampleProperty").GetValue(sample, null).ToString();


//برای گرفتن مقدار فیلد با نام
var fieldValue = sample.GetType().GetField("SampleField").GetValue(sample).ToString();



نام هایی که بعنوان پارامتر جلوی متدهای GetProperty و GetField نوشته شدن رو شما تعیین می کنید (شما از فایل xml می خونید)



موفق باشید


ممنون من دنبال همین بودم دیروز بعد از کلی سرچ پیداش کردم


بازم ممنونم دوست عزیز