我一直在搜索,但是没有运气,我试图从数据库中的表中调用类中的方法,此方法将调用另一个找到条目并填充对象的方法,但是我想将此对象传递给我的实例
public class ProductCategory
{
public int ProductCategoryID { get; set; }
public string Name { get; set; }
public Guid rowguid { get; set; }
public DateTime ModifiedDate { get; set; }
public void FindItem<T1>(T1 id)
{
try
{
var obj = Activator.CreateInstance(this.GetType());
obj = Dal.ObjFind(obj, id); //this fill the object
//i want something like
foreach properties in obj
this.propertie = obj.propertie
}
catch (Exception e)
{
throw e;
}
}
}
我可以像
那样调用该方法ProductCategory test = new ProductCategory();
test.Find(1);
在加载完我的对象之后,我将非常感谢您提供的任何帮助,对于英语不好,或者如果我无法清楚解释的问题,我们表示歉意
致谢
答案 0 :(得分:1)
好吧,我找到了一种方法来实现,如Pac0所说,您可以这样做
public void FindItem<T1>(T1 id)
{
try
{
var obj = this;
// fill the object with the DB data
obj = Dal.ObjFind(new Production.ProductCategory(), id);
PropertyDescriptorCollection PropertyObj =
TypeDescriptor.GetProperties(this);
//iterating the properties in the instance of the class
foreach (PropertyDescriptor prop in PropertyObj)
{
//Get the value for each properties in the filled Obj
//and set that value for each properites in "this"
prop.SetValue (this,prop.GetValue(obj));
}
}
catch (Exception e)
{
throw e;
}
}
那样,您可以像“ test.FindItem(1)”那样调用设备,对象将被加载,谢谢!
答案 1 :(得分:0)
要在运行时获取有关某些类durig运行时的信息称为* reflection **(该术语应有助于您的搜索)
要获取类型的所有属性,可以使用Type.GetProperties()。
也看一下GetProperty。
有了这个,您应该能够实现您想要的。
但是,我不认为这是最简单的方法。可能有人会想出更好的方法来解决您的根本问题。