代码之家  ›  专栏  ›  技术社区  ›  Cherian

删除.net代码中的文字字符串

  •  1
  • Cherian  · 技术社区  · 15 年前

    在代码中删除(帮助程序/扩展方法)字符串文字时,您做了什么?

    e、 我到处都有这样的nhibernate搜索标准代码。

    Expression.Eq("Status", LoginStatus.LoggedIn),
    

    地位 在案例中用作字符串的实体对象的属性。

    使现代化 :本例中的主要原因是启用重构。如果我编写一个反映对象并获取值的helper方法,将使上述表达式具有强类型。

    5 回复  |  直到 15 年前
        1
  •  2
  •   slf    15 年前

    这就是“资源”和“设置”的用途。您可以通过在VisualStudio中右键单击项目并单击“属性”,然后转到“资源”或“设置”选项卡来找到它。

    对于不会经常更改的预构建资源,请使用资源。对于要配置的内容,请使用设置,因为它会自动为App.config生成配置块。如果不想使用默认值,则仍需要手动复制和粘贴这些值。

        2
  •  1
  •   Brandon Wood    15 年前

    我通常将它们声明为常量,或者,如果我有一组相关字符串,我将创建一个枚举。

    无论如何,至少它们有一个描述性的名称(而不是使用“魔术字符串”),并且它们的使用总是一致的。

        3
  •  1
  •   Ruben Bartelink    15 年前

    在过去,我曾使用CodeRush(或您最喜欢的重构工具)在类中转换为常量字符串,然后将所述常量字符串移动为它们所应用的实体类的公共成员。

    这里真正的答案是,如果你想让你的代码在面对重构时不那么脆弱,那就不要再从事字符串业务,使用Linq 4/to-NHibernate,但是你必须研究它的完整性是否足以满足你的目的。

        4
  •  1
  •   Community basarat    7 年前

    意识到我可以用表达树的方式来做这件事。使用代码作为数据!

    像这样的

      protected IList<T> _FindByProperty<TResult>(Expression<Func<T, TResult>> expression, TResult value)  
       {  
       return _FindByProperty((expression.Body as MemberExpression).Member.Name, value);  
      } 
    
    IList<User> costCenters = _FindByProperty( user=> user.Name, "name"); 
    

    信用 : http://suryagaddipati.wordpress.com/2009/03/14/code-as-data-in-c-taking-advantage-of-expression-trees/

    这与本书中的许多问题有关 expression-trees 标签

        5
  •  0
  •   Bertvan    15 年前

    我使用与切里安类似的方法。我从FluentNhibernate的反思助手那里得到了我的想法。

    其原理是使用表达式树,然后只需输入x=>x、 地位表达。该方法将以字符串形式返回属性名称。

    事实上,你也可以用FluentNHibernate?然而,我不知道他们的查询模型是否像他们的映射接口一样广泛。。。