我有以下课程:
public class Question {
public Question() { this.Answers = new List<Answer>(); }
public int QuestionId { get; set; }
public string Text { get; set; }
public virtual ICollection<Answer> Answers { get; set; }
}
public class Answer {
public int AnswerId { get; set; }
public string Text { get; set; }
}
我有以下内容,有人建议检查字符串并删除结尾。我把它放到一个方法中,它现在看起来像这样:
public static string cleanQuestion(string text)
{
if (text == null) { return null; }
else {
return (Regex.Replace(text, "<p> </p>$", ""));
}
}
我知道如何在问题的文本字段上调用此方法。但我怎么能打电话给这个方法 每个答案文本字段?
答案 0 :(得分:0)
如何将属性更改为字段支持的属性:
public class Answer {
private string _text;
public int AnswerId { get; set; }
public string Text
{
get { return _text; }
set { _text = Class.cleanQuestion(value); }
}
}
其中Class
是static
方法所在的类。
现在,每当答案得到Text
时,它都会被清除。
另一方面。如果想要 Text
包含未清除的值,则在某些情况下,您可以在get
类上构建Answer
属性:< / p>
public string CleanText
{
get { return Class.cleanQuestion(this.Text); }
}
答案 1 :(得分:0)
您是否尝试过以下操作:
Question q = new Question();
foreach (Answer ans in q.Answers) {
string cleanedText = cleanQuestion(ans.Text);
}
这将在问题对象中对集合中的每个答案进行检查,并使用答案文本的参数调用该方法。
答案 2 :(得分:0)
我认为只需浏览每个Question
:
foreach(Anser answer in question.Answers)
answer.Text = cleanQuestion(answer.Text);
但是,我也想说,您可以将cleanQuestion()
作为Question
添加到method
课程中。通过这种方式,您只需拨打CleanQuestions()
,就可以自行查看每个答案。
答案 3 :(得分:0)
如果你想保留原来的答案:
问题类:
public List<Answer> CleanAnswers {
get {
return Answers.Select(a => a.CleanText()).ToList();
}
}
答案课:
public string CleanText()
{
if (this.Text == null) { return null; }
else {
return (Regex.Replace(this.Text, "<p> </p>$", ""));
}
}
答案 4 :(得分:0)
你也可以去扩展方法,会更方便。
public class Question
{
public Question() { this.Answers = new List<Answer>(); }
public int QuestionId { get; set; }
public string Text { get; set; }
public virtual ICollection<Answer> Answers { get; set; }
}
public static class TextExtension
{
public static string CleanQuestion(this Question @this)
{
if (@this.Text == null) { return null; }
else
{
return (Regex.Replace(@this.Text, "<p> </p>$", ""));
}
}
}
// Usage:
Question q1= new Question();
q1.CleanQuestion();