c#如何检查对象属性并正确转换?

c#如何检查对象属性并正确转换?,c#,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; }

我有密码

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; }
    }
其他

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
        });
一些

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));
    }

}

我认为这不是一个解决方案,这就是为什么我要问正确的方法。

我不确定你想要实现什么,但你可以用以下方法替换你的
Insert
方法:

public static void Insert(object insertObject)
{
    var convertedObject = Convert.ChangeType(insertObject, insertObject.GetType());
}

我看不出你的代码到底想要实现什么?听起来有点像XY问题,但不能确定..
Convert.ChangeType(val,prop.PropertyType.Name)
在这里可以工作。转换后返回的数据在哪里使用?我得到错误:错误2参数2:无法从“字符串”转换为“System.Type”,因为prop.Property.Name返回字符串您究竟插入了什么?参数类型真的需要是
Object
?在我看来,最好使用泛型方法Insert(T项)
public static void Insert(object insertObject)
{
    var convertedObject = Convert.ChangeType(insertObject, insertObject.GetType());
}