C# 传递参数或使用不同的操作方法

C# 传递参数或使用不同的操作方法,c#,.net,asp.net-mvc,design-patterns,C#,.net,Asp.net Mvc,Design Patterns,我正在使用mvc为不同的集成创建一个提要api。例如,假设我想向其他人提供发布在我网站上的问题提要。最初的实现是将第三方的名称作为参数传递给feeds控制器上的操作方法 public XmlResult Get(string partner) { //Call the business layer and get the List<Questions> if (!string.IsNullOrEmpty(partner)) {

我正在使用mvc为不同的集成创建一个提要api。例如,假设我想向其他人提供发布在我网站上的问题提要。最初的实现是将第三方的名称作为参数传递给feeds控制器上的操作方法

public XmlResult Get(string partner)
{

    //Call the business layer and get the List<Questions>       


    if (!string.IsNullOrEmpty(partner))
    {
        partner = partner.ToLower();

        switch (partner)
        {
            case "org1":
                Org1XMLFeedViewModel org1FeedViewModel = new Org1XMLFeedViewModel();
                org1FeedViewModel.LastBuildDate = DateTime.Now;

                foreach (QuestionInfo Question in QuestionsForFeed)
                {
                    Org1XMLFeedQuestionViewModel QuestionForFeed = new Org1XMLFeedQuestionViewModel(Question);
                    Org1FeedViewModel.Questions.Add(QuestionForFeed);
                }
                return new XmlResult(Org1FeedViewModel);                        
        case "org2":
        //similar to org1, use org2 ViewModel                       
            default:
                return new XmlResult(QuestionsForFeed);
        }
    }

    return new XmlResult(QuestionsForFeed);
}
public-XmlResult-Get(字符串伙伴)
{
//调用业务层并获取列表
如果(!string.IsNullOrEmpty(partner))
{
partner=partner.ToLower();
交换机(合作伙伴)
{
案例“org1”:
Org1XMLFeedViewModel org1FeedViewModel=新的Org1XMLFeedViewModel();
org1FeedViewModel.LastBuildDate=DateTime.Now;
foreach(问题反馈中的问题信息问题)
{
Org1XMLFeedQuestionViewModel QuestionForFeed=新的Org1XMLFeedQuestionViewModel(问题);
Org1FeedViewModel.Questions.Add(QuestionForFeed);
}
返回新的XmlResult(Org1FeedViewModel);
案例“org2”:
//与org1类似,使用org2 ViewModel
违约:
返回新的XmlResult(问题反馈);
}
}
返回新的XmlResult(问题反馈);
}
然而,现在有一种想法,可能不同的视图模型不应该在同一个动作方法中。因此,不同的合作伙伴可以使用不同的操作方法,而不是将合作伙伴作为参数传递


哪一个更好,为什么?还是有更好的模式出现在你的脑海中?

控制者需要节食的神圣香烟;)

OT:就个人而言,我建议您将它们分成不同的操作方法,将它们分开,这样每个操作只能返回一种类型的控制器,因为它是那种类型的操作


这样做还意味着您可以从控制器中抽象出该逻辑,因为MVC的最佳实践是瘦控制器、胖模型,在这里,您无法坚持这一点,因为在这种情况下,您的控制器必须确定模型类型。

我认为您不需要在这里执行其他操作。您可以将合作伙伴模型绑定到对象中吗;并使用继承,这样您就可以摆脱switch语句?将代码固定到各种操作中并不是实现瘦控制器的解决方案,还可以通过为业务逻辑引入一些类并从控制器调用这些类来实现。是的,这是因为他如何确定要返回的类型?调用返回对象的服务?不好:)+1大副,如果来电者感到困惑,我同意你的意见,否则返回物品不是坏事。就调用者所知,作为返回类型,他最终会得到什么,这是个人的偏好。是的,没错,我想就模型而言,虽然你真的想发送视图的确切类型与视图中的模型匹配(保存投射等),但在其他地方返回对象也不错,尽管我同意:)