如何解决将文件命名架构存储和使用到类属性
我有一个包含stateProfile
类和Inquiry
类的项目。
Inquiry
类是静态的,其工作是创建一个文本文件。文本文件的内容是根据存储在stateProfile
对象的属性中的信息计算的(美国每个州都可以使用一个信息,最终可以从XML文件中读取该信息)。
我已经能够为所有州共享一个全局命名模式,但是现在我有满足基于stateProfile
对象命名它们的要求。
例如:
我有一个stateProfile
代表堪萨斯州,另一个代表密苏里州。
Inquiry inquiry = new Inquiry();
foreach(stateProfile p in _listOfProfiles){
inquiry.CreateFile(p);
}
在Inquiry.CreateFile(stateProfile p)
中,我有一个定义文件名的表达式:
sOutFileName = $"{p.prop1}_{p.prop2}_Literal3_{_staticProp.ToString("D4")}.txt";
关于将逻辑/表达式存储在诸如stateProfile.outFileName
之类的属性中的任何建议
public string outFileName {
$"{p.prop1}_{p.prop2}_Literal3_{_staticProp.ToString("D4")}.txt";
}
然后能够像下面这样在Inquiry.CreateFile(stateProfile p)
中引用该属性?
sOutFileName = $"{p.outFileName}";
解决方法
我认为您可能正在寻找这种方法。它允许您将C#脚本嵌入到XML中并以代码解释它们。
每个州现在可以使用不同的文件名格式。
implicit class CopyOps[A](a: A)(implicit generic: Generic[A]) {
def copy: A = generic.from(generic.to(a))
}
,
再三考虑之后,Alex's comment是必经之路。
由于我要用于构造文件名公式的所有属性都属于stateProfile
对象,因此我将成为方法GetFileName()
类成员,并传入我可能需要的其他任何内容。 / p>
我使用了switch语句,随着我要考虑的状态数量的增加,它可能变得笨拙,但目前它仍然有效。
public string GetFileName(int prop1) {
string sOutFileName = "";
switch (SourceState) {
case "MO":
sOutFileName = $"ReqPref_{this.stProfPropA}_{prop1}.txt";
break;
default:
sOutFileName = $"{this.stProfPropB}_{prop1}.txt";
break;
}
return sOutFileName;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。