在方法上创建一个字符串属性,然后在通过属性

时间:2015-05-29 08:04:13

标签: c#

当我在另一个话题上问另一个Q时,我被置于这条道路上,但我正在努力想看看它是如何可能的。所以,如果有人能指出我正确的方向,这将是太棒了!非常感谢。

所以基本上在我的UI层(外部网站)中,我试图减少硬编码字符串和条件逻辑。

以下代码从查询字符串(web api上的控制器名称)接收值。

protected void Page_Load(object sender, EventArgs e)
{
    string addonType = Request.QueryString["addOnType"];
    string webName = Request.QueryString["webName"];

        //Addon does exist, so does the one being requested exist
        if (contentFacade.AddonExists(addonType)) 
        {
            //Determine whether its a list or single page
            contentFacade.GetContent(addonType, webName);
        }
        else
        {
            //Requested addon does not exist
            Response.Redirect("/notifications/404/");
        }
}

此时它会触发一个方法:contentFacade.GetContent(addonType, webName);

我指向构建内容的外观,在该外观中我有多种方法,如:

  • GetBlogPosts
  • GetNews
  • GetServices

所有方法都指向各自的类(DTO' s)从web-api获取json,然后在UI端将其转换为HTML。

在理想的世界中,我想在控制器名称的任何一个方法上添加一个属性,如下所示:

["blog"] //controller name in the attribute
public string GetBlogPosts() 
{
   //Code ommitted
}

在前端,我只会打电话给#34; GetContent"

public string GetContent(string controllerName, string singleItemName = "") 
{
    //HERE I would like to call the method by the attribute of the controller name (string value)

    //Maybe something like this ...
    return this.attribute(typeOf(controllerName)).Invoke().Value();
}

最终的想法是让它保持超级可维护性。一些逻辑将被删除,因此UI(外部网站)除了收到一些很酷的内容之外,不需要知道任何其他信息。

所有信息都是使用安全的应用密钥从我的自定义CMS中提取的。它只是以强大的方式提供内容,而且具有挑战性。

所以要重新限制,是否有人可以指向我向方法添加属性然后使用字符串通过属性在另一个方法中调用该方法?

这需要消化很多,我希望它不会太过于压倒性,我完全感谢每个人的时间。

此致

0 个答案:

没有答案