c#如何按声明顺序输出一个类的成员?
c#如何按声明顺序输出一个类的成员,使用GetFields()获取出来的成员顺序无法保证,请问如何才能保证按声明顺序输出? --------------------编程问答-------------------- Mission Impossible--------------------编程问答--------------------
同意 --------------------编程问答--------------------
同上 --------------------编程问答-------------------- 成员的输出一般都是靠实例对象来做到的,而具体调用哪个实例方法又是不确定的。所以,楼上说的:“Mission Impossible”是对的。哈哈。 --------------------编程问答-------------------- lz想这样做,有何企图? --------------------编程问答-------------------- 那c#要把一个类的数据,导出为为一个文件,就做不到了? --------------------编程问答--------------------
你要序列化? --------------------编程问答-------------------- "按声明顺序输出一个类的成员"
你直接把成员后 + _01 _02 来人为设定吧
因为你的申明成员顺序不一定是编译器编译之后的顺序.
--------------------编程问答-------------------- 给成员加一个序号Attribute --------------------编程问答-------------------- 不知道楼主要的是不是这样?
public class OrdinalAttribute : Attribute
{
private int ordinal;
public OrdinalAttribute(int ordinal)
{
this.ordinal = ordinal;
}
public int Ordinal
{
get { return this.ordinal; }
set { this.ordinal = value; }
}
}
public class TestType
{
[Ordinal(0)]
public int ZZZ = 0;
[Ordinal(1)]
public int UserId { get; set; }
[Ordinal(2)]
public int BBB { get; set; }
[Ordinal(3)]
public int AAA { get; set; }
}
class Program
{
public static int GetOrdinal(System.Reflection.MemberInfo member)
{
try
{
var attrs = member.GetCustomAttributes(typeof(OrdinalAttribute), false).Cast<OrdinalAttribute>();
return attrs.First().Ordinal;
}
catch
{
return 0;
}
}
static void Main(string[] args)
{
var result = typeof(TestType).GetMembers()
.Where(m => m.MemberType == System.Reflection.MemberTypes.Field || m.MemberType == System.Reflection.MemberTypes.Property)
.Select(m => new
{
Member = m,
Ordinal = GetOrdinal(m)
})
.OrderBy(m => m.Ordinal);
foreach (var item in result)
{
Console.WriteLine("{0} - {1}", item.Member.Name, item.Ordinal);
}
}
}
补充:.NET技术 , C#