传递通用对象并决定在<asp:Label>中填充什么

Joh*_*ann 1 c# asp.net generics generic-list

<asp:Label> 希望根据我传递给它的Generic对象进行填充.

目前我有以下代码: -

    private void PopulateEnglishQuestion(int questionId)
    {
        ReportQuestion reportQuestion = questionsBll.GetReportQuestions().Where(x=> x.ReportQuestionId == questionId).FirstOrDefault();
        PopulateLabels(reportQuestion);
    }

    private void PopulateTranslatedQuesiton(int questionId)
    {
        ReportQuestionTranslation reportQuestionTranslation = questionsBll.GetReportQuestionsTranslation().Where(x => x.QuestionId == questionId).FirstOrDefault();
        PopulateLabels(reportQuestionTranslation);
    }

    private void PopulateLabels<T>(T item)
    {
        lblQuestionTitle.Text = typeof (T) == typeof (ReportQuestion)
                                    ? ((ReportQuestion) (item)).ReportQuestionTitle
                                    : ((ReportQuestionTranslation) (item)).ReportQuestionTitleTrans; 
    }
Run Code Online (Sandbox Code Playgroud)

如何让PopulateLabels方法正常工作?

pas*_*ein 5

你应该使用一个接口ReportQuestionReportQuestionTranslation实现:

interface IQuestion
{
    string TitleText;
}
Run Code Online (Sandbox Code Playgroud)

然后,使用以下代码:

public void PopulateLabels(IQuestion item)
{
    lblQuestionTitle.Text = item.TitleText;
}
Run Code Online (Sandbox Code Playgroud)