此刻,我正在使用我的班级属性来存储信息。
为了确保可以使用类和索引确定填充数据的正确顺序(顺序),建议使用Attributes(属性0将获得索引0,依此类推)。使用CallerLineNumber
效果很好。
这是我的示例:
[AttributeUsage(AttributeTargets.Property, Inherited = false, AllowMultiple = false)]
public sealed class OrderAttribute : Attribute
{
private readonly int order_;
public OrderAttribute([CallerLineNumber]int order = 0)
{
order_ = order;
}
public int Order { get { return order_; } }
}
public class MyClass
{
[Order] public string string1 { get; set; }
[Order] public string string2 { get; set; }
[Order] public string string3 { get; set; }
[Order] public string string4 { get; set; }
}
有了属性,我可以使用以下命令获取序列:
var properties = from property in typeof(MyClass).GetProperties()
where Attribute.IsDefined(property, typeof(OrderAttribute))
orderby ((OrderAttribute)property
.GetCustomAttributes(typeof(OrderAttribute), false)
.Single()).Order
select property;
我也在寻找的是,有可能获得一个整数,该整数充当类中属性的索引。 示例:
string stringData = string.Format("A{0}B{0}C{0}D", "\t"); //usually my data comes in multiple strings like this
var dataSplit = stringData.Split('\t');
string var1 = dataSplit[0];
string var4 = dataSplit[3];
0和3给出了split [n]中需要的序列。
但是,如果我想使用类似GetIndex
的方法,那将非常有帮助:
MyClass myClass = new MyClass();
string var1_alt = dataSplit[GetIndex(myClass.string1)];
string var4_alt = dataSplit[GetIndex(myClass.string4)];
使用该类的属性返回表示其在类中位置的整数(类似于枚举)。我想使用myClass.string1
作为类属性来获取索引,而不是将其保存为提交时的字符串值。
我们将不胜感激。
注意:我使用的是C#4.5.2,无法向上移动。另外,仅限使用System
。