0
我有一個代碼c#如何檢查對象屬性並將其轉換爲適當的方式?
Page.cs
public class Page
{
public Guid Id { get; set; }
public String Title { get; set; }
public String SubTitle { get; set; }
public String Slug { get; set; }
public String Content { get; set; }
public Int16 Status { get; set; }
public Int16 Visibility { get; set; }
public Guid? ParentId { get; set; }
public int Order { get; set; }
public byte[] FeaturedImage { get; set; }
public Guid CreatedBy { get; set; }
public DateTime CreatedAt { get; set; }
public Guid ModifiedBy { get; set; }
public DateTime ModifiedAt { get; set; }
}
Other.cs
Some.Insert(new Page
{
Id = Guid.NewGuid(),
Title = "Glass",
SubTitle = "",
Slug = "glass",
Content = "content",
Status = 1,
Visibility = 1,
ParentId = Guid.NewGuid(),
Order = 1,
FeaturedImage = null,
CreatedBy = Guid.NewGuid(),
CreatedAt = DateTime.Now,
ModifiedBy = Guid.NewGuid(),
ModifiedAt = DateTime.Now
});
Some.cs
public static void Insert(Object insertObject)
{
Type myType = insertObject.GetType();
IList <PropertyInfo> props = new List <PropertyInfo> (myType.GetProperties());
foreach(PropertyInfo prop in props)
{
Object val = prop.GetValue(insertObject, null);
if (prop.PropertyType.Name == "Byte[]")
{
values.Add(new SqlParameter(prop.Name, Convert.ToByte(val)));
}
else
values.Add(new SqlParameter(prop.Name, val));
}
}
我的代碼表明,我硬編碼檢查每propertyType和name,然後轉換它。它真的很累,如何將對象轉換爲原始數據類型的適當方式。
我想實現的是動態創建一個數據訪問對象。 我上傳圖片時總是出錯,轉換爲byte [],最後我得到一個錯誤不能將字符串轉換爲varbinary(max)。 這就是爲什麼我添加:
if (prop.PropertyType.Name == "Byte[]")
{
values.Add(new SqlParameter(prop.Name, Convert.ToByte(val)));
}
我認爲這不是解決辦法,這就是爲什麼我問的正確方法。
我看不到你的代碼實際上是想達到什麼目的?聽起來有點像XY問題,但不能確定.. – Sayse 2015-03-19 09:15:25
'Convert.ChangeType(val,prop.PropertyType.Name)'會在這裏工作。轉換後使用的返回數據在哪裏? – 2015-03-19 09:15:53
我得到的錯誤:錯誤參數2:無法從'字符串'轉換爲'System.Type'\t,因爲prop.Property.Name返回字符串 – yozawiratama 2015-03-19 09:19:52