mmbguide
یک شنبه 22 دی 1398, 12:48 عصر
سلام
من یک کلاس دارم که تعدادی Property داخلش هست و به نوعی ساختار اطلاعاتم هستش. چطور میتونم در زمان اجرا Property به کلاس اضافه و یا کم کنم؟ اصلا امکان داره یا خیر؟
the king
یک شنبه 22 دی 1398, 14:08 عصر
سلام
من یک کلاس دارم که تعدادی Property داخلش هست و به نوعی ساختار اطلاعاتم هستش. چطور میتونم در زمان اجرا Property به کلاس اضافه و یا کم کنم؟ اصلا امکان داره یا خیر؟
از NET. 4 به بعد DynamicObject وجود داره. برای اینکه بتونه موارد dynamic رو در زمان اجرا مقدار دهی کنه در پروژه تون به اسمبلی Microsoft.CSharp رفرنس بدید. (منوی ...Project > Add Reference)
public class Class1 : System.Dynamic.DynamicObject
{
private readonly Dictionary<string, object> _props = new Dictionary<string, object>();
public Class1()
{
_props.Add("Name", "ali");
_props.Add("Two", 2);
_props.Add("Pi", Math.PI);
}
public override IEnumerable<string> GetDynamicMemberNames()
{
return _props.Keys;
}
public override bool TrySetMember(SetMemberBinder binder, object value)
{
if (_props.ContainsKey(binder.Name))
{
_props[binder.Name] = value;
return true;
}
return false;
}
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
return _props.TryGetValue(binder.Name, out result);
}
}
private void Form1_Load(object sender, EventArgs e)
{
dynamic x = new Class1();
x.Name = "Reza";
MessageBox.Show(x.Pi.ToString());
}
mmbguide
یک شنبه 22 دی 1398, 22:46 عصر
تشکر بابت راهنمایی
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.