如果遍历一个类所有成员并保存TXT文件中

qingtianzhuren 2010-09-16 10:27:30
关键是如何像.item[i]这样输出类的值,不知用反射能不能做到?如果一个类成员变量只有几个倒容易,直接this.成员变量1+this.成员变量2+this.成员变量3+this.成员变量3就可以了,但如果如果几十个就很麻烦。
...全文
296 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-09-16
  • 打赏
  • 举报
回复
对象序列化和反序列化
public static void SaveXml(string filePath, object obj, System.Type type)
{
using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath))
{
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(type);
xs.Serialize(writer, obj);
writer.Close();
}
}
qingtianzhuren 2010-09-16
  • 打赏
  • 举报
回复
Dictionary<string, List<data>> jilu = new Dictionary<string, List<data>>();data为一个类,如何才能保存该DICTIONARY对象的值呢?
qingtianzhuren 2010-09-16
  • 打赏
  • 举报
回复
楼上,我的意思是对象保存,保存一个实例。
Lemon2050 2010-09-16
  • 打赏
  • 举报
回复
给个简单的代码,仅供参考:
Type t = typeof(System.String);//“System.String” 是类名
string className = t.Name;
Console.WriteLine(className);
System.Reflection.MethodInfo[] methods = t.GetMethods();
foreach (System.Reflection.MethodInfo method in methods)
{
Console.WriteLine( method.Name);
}
//获取所有成员
System.Reflection.MemberInfo[] members = t.GetMembers();

//获取所有属性
System.Reflection.PropertyInfo[] properties = t.GetProperties();
foreach (System.Reflection.PropertyInfo property in properties)
{
Console.WriteLine(property.Name);
}

symbol_bc 2010-09-16
  • 打赏
  • 举报
回复
反射肯定能做到,你要持久化到文件中的话,其实序列化也是不错的选择。
huwei12345 2010-09-16
  • 打赏
  • 举报
回复
反射可以。。。。。
xzjxylophone 2010-09-16
  • 打赏
  • 举报
回复
反射 应该能做到吧, 能反射出所有的属性出来, 但是 私有变量 不清楚 能否反射出来
liyangyang621726 2010-09-16
  • 打赏
  • 举报
回复
序列化和反序列化进行操作 以二进制写入
volunteergg 2010-09-16
  • 打赏
  • 举报
回复
这是我曾经写的一个类,使用序列化与反序列化,原则上可以用到任何对象上,楼主可以参考下。
/// <summary>
/// 不能实例化,提供两个静态方法,帮助对象与Xml文件相互转换,对象访问级别必须是公有的,且必须提供一个无参构造函数
/// </summary>
public class ObjectAndXmlFile
{
private ObjectAndXmlFile()
{
}
/// <summary>
/// 将对象的所有公共字段序列化到文件中,未提供异常处理
/// </summary>
/// <param name="a">要序列化的对象,对象必须是Public</param>
/// <param name="xmlFile">序列化的文件</param>
/// <returns>序列化完毕后返回True</returns>
static public bool ObjectToXmlFile(object a,string xmlFile)
{
XmlSerializer xmlSer = new XmlSerializer(a.GetType());
StreamWriter myWriter = new StreamWriter(xmlFile);
xmlSer.Serialize(myWriter, a);
myWriter.Close();
return true;
}
/// <summary>
/// 将文件反序列化到对象中,未提供异常处理
/// </summary>
/// <param name="objType">对象的类型</param>
/// <param name="xmlFile">要反序列化的文件</param>
/// <returns>序列化得到的对象</returns>
static public object ObjectFromXmlFile(Type objType, string xmlFile)
{
XmlSerializer xmlSer = new XmlSerializer(objType);
FileStream myFileRead = new FileStream(xmlFile, FileMode.Open);
object a = xmlSer.Deserialize(myFileRead);
myFileRead.Close();
return a;
}
}
qingtianzhuren 2010-09-16
  • 打赏
  • 举报
回复
我这个实例包括了,类,LIST,DICTIONARY,这些都要序列化吗?!能不能把dictionary的多个List<T>保存到一个XML中?
wuyq11 2010-09-16
  • 打赏
  • 举报
回复
List<T> lst=new List<T>();
XmlSerializer ser = new XmlSerializer(typeof(List<T>));
ser.Serialize(File.Create("C:\\A.xml"), lst);
public static string Serialize<T>(T t)
{
using (StringWriter sw = new StringWriter())
{
XmlSerializer xz = new XmlSerializer(t.GetType());
xz.Serialize(sw, t);
return sw.ToString();
}
}
qingtianzhuren 2010-09-16
  • 打赏
  • 举报
回复
楼上的方法我看到过,保存一个类进到二进制数组,但是怎么样才一下子保存一个包含了LIST<DATA>的DICTIONARY呢?能不能直接保存到一个文件当中呢

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧