using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.IO;
namespace RefectionGetConst
{
class Program
{
static void Main(string[] args)
{
Assembly asm=Assembly.LoadFile("D:XXX.dll");
foreach (Type type in asm.GetTypes())
{
if (type.Name != "Program")
{
GetTargetType(type);
}
}
}
private static void WriteIntoOneFile(string str, string from)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) ;
DirectoryInfo di = new DirectoryInfo(path);
if (!di.Exists)
{
di.Create();
}
using (StreamWriter sw = new StreamWriter(path + "//AllWord.CSV", true, Encoding.Default))
{
sw.WriteLine(str+","+from);
sw.Close();
}
}
private static void WriteWordOut(string str, string fileName)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "//Resourse";
DirectoryInfo di = new DirectoryInfo(path);
if (!di.Exists)
{
di.Create();
}
using (StreamWriter sw = new StreamWriter(path + "//" + fileName + ".CSV", true, Encoding.Default))
{
sw.WriteLine(str);
sw.Close();
}
}
public static void GetTargetType(Type type)
{
FieldInfo[] ps = type.GetFields();
foreach (FieldInfo p in ps)
{
string name = p.Name;
object value = p.GetValue(null);
// WriteWordOut(value.ToString().Replace("/n", "//n").Replace(",","!@#"), type.Name);
WriteIntoOneFile(value.ToString().Replace("/n", "//n").Replace(",", "!@#"), type.Name);
}
}
}
}
最近做一个汉化项目,自己写了段代码来实现了获取一个DLL所有字段值做成一个字典给翻译整理。觉得还比较好用。