C# object对象 属性

用C#语言将object对象的属性根据string型的属性名解析出属性的值就是想把数据库中的任意表直接弄成一个对象就等于那个代码生成器生成dal一样,我想用个方法代替da... 用C#语言 将object对象的属性根据string型的属性名解析出属性的值
就是想 把数据库中的任意表直接弄成一个对象 就等于那个代码生成器生成dal一样,我想用个方法代替dal
传入个表名 跑数据库中查表的字段和说明 后返回个model层的实例对象但以object返回后用的话强转下。

另外 再问下 把string类型的类名直接转换成某类
展开
 我来答
cnmahj
推荐于2018-05-10 · TA获得超过954个赞
知道小有建树答主
回答量:785
采纳率:0%
帮助的人:1065万
展开全部
如果已知道对象的类型,这是比较简单的例子。
如果不知道对象的类型,就需要用反射来做了。
利用反射将你要使用的对象的type取出后,就可以如下例一样取得必要的属性值了。
将String类型的类名直接转换成类,需要知道assembly是那个DLL。可以参考我下面的例子。assembly是DLL,取到assembly之后,通过GetType可以取到类、再通过Activator实例化这个类,就可以使用了。详细的可以看一下最下面的例子。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
TestObj to = new TestObj();
Type t = to.GetType();
PropertyInfo pi = t.GetProperty(textBox1.Text);
if (pi != null)
{
textBox2.Text = pi.GetValue(to, new object[] { }).ToString();
}

}
}

public class TestObj
{
private string mProperty1 = "Test";
public string Property1
{
get
{
return mProperty1;
}
set
{
mProperty1 = value;
}
}
}
}

利用反射的button1_Click事件代码如下:
Assembly assembly = Assembly.Load("WindowsApplication1");
Type[] typeClass = assembly.GetTypes();
int i;
for (i = 0; i < typeClass.Length; i++)
{
if (typeClass[i].Name.Equals("TestObj") == true)
{
break;
}
}
Type t = assembly.GetType(typeClass[i].FullName);

PropertyInfo pi = t.GetProperty(textBox1.Text);
if (pi != null)
{
object objService = Activator.CreateInstance(t);
textBox2.Text = pi.GetValue(objService, new object[] { }).ToString();
}
无心睡眠的感觉
2010-06-04 · TA获得超过320个赞
知道小有建树答主
回答量:238
采纳率:100%
帮助的人:220万
展开全部
利用 反射 循环属性 字段 和 方法等 下面只是个小例子
public String toString() {
StringBuffer buffer = new StringBuffer();
//返回所有字段
Field[] fields = OBJECT
for (int i = 0; i < fields.length; i++) {
//当前字段名称
String name = fields[i].getName();
buffer.append(name);
buffer.append(":");
try {
//当前实例该字段值
buffer.append(fields[i].get(this));
} catch (Exception ex) {
System.out.println("err:" + ex.getMessage());
}
buffer.append("\n");
}
return buffer.toString();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
务骄卞虹影
2020-02-20 · TA获得超过3779个赞
知道大有可为答主
回答量:3160
采纳率:27%
帮助的人:392万
展开全部
var
t
=
typeof(对象);
var
list
=
t.getproperties();
//反射取所有的属性
foreach(...........)
//遍历
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
锦绣九洲分类垃圾桶
2010-06-04 · TA获得超过864个赞
知道小有建树答主
回答量:504
采纳率:100%
帮助的人:516万
展开全部
//能不能问题说具体呢.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式