小编yel*_*ood的帖子

在使用git时,如何告诉TeamCity将合并视为单个提交?

我们最近从SVN转到git.我们使用主"发布"分支(主),以及开发人员正在处理的每个功能的功能分支.在TeamCity中,我们为每个功能分支都有一个项目,当然还有一个主项目.

当我们使用SVN时,每当有人从master合并到他的功能分支或反之亦然时,TeamCity会将合并视为一次提交.现在,使用git,每次合并都会导致TeamCity显示此合并带来的所有提交.

这会导致一些问题,例如当有人从master合并到他的功能分支时,现在他的TeamCity项目由于合并而显示"283挂起的更改",如果构建失败,将通知这些更改的作者,就好像他们做了功能分支上的这些更改.

有没有办法告诉TeamCity将git合并视为单个提交?

我们可以使用压缩合并来解决它,但这是我们真正想要避免的.

git teamcity continuous-integration

31
推荐指数
3
解决办法
4153
查看次数

如何避免子类的工厂方法中的switch-case

假设我们有一系列类(卡片,为了它),我们需要根据一些标识符实例化它们.工厂方法如下所示:

public Card GetCard(int cardNumber) 
{
   switch(cardNumber) 
   {
     case 13: return new King();
     case 12: return new Queen();
     case 11: return new Jack();          
   }

   //...
}
Run Code Online (Sandbox Code Playgroud)

我想要的是避免这种情况switch.为什么?也许我想在功能中重复使用这种比较.

我想出的是这样的:

private Dictionary<int, Type> cardTypes = 
 { 
   {13, typeof(King)},
   {12, typeof(Queen)},
   {11, typeof(Jack)}
 };

 public Card GetCard(int cardNumber) 
 {        
    var cardType = cardTypes[cardNumber];
    var instance = Activator.CreateInstance(cardType);
    return (Card)instance;
 }
Run Code Online (Sandbox Code Playgroud)

但是,此解决方案使用昂贵的反射,并且当您有多个"标识符"时也会出现问题(例如,1和14都给出Ace- 我应该在字典中添加2个键吗?).

这种情况下的最佳做法是什么?

c# design-patterns

22
推荐指数
1
解决办法
8275
查看次数

在类中表示类型安全属性包的最佳方法是什么?

我有一个第三方应用程序,它为对象提供了许多"属性",它们只是(字符串)键和值的对.值类型可以是字符串,DateTime,Int32或Int64.

我需要创建自己的类来以方便的方式表示此对象.我正在创建一个向客户端提供此对象的WCF服务,因此我需要它非常简单和干净.

属性的键将显示为客户端的枚举(以隐藏第三方应用程序的特定键字符串的信息).但是,我不确定如何表示这些值.以下是一些选项:

选项1:每个属性值有不同的集合,看起来很难看,但客户很容易使用

public class MyObject
{
    public Dictionary<MyTextAttributeKeysEnum, string> TextAttributes { get; set; }
    public Dictionary<MyDateAttributeKeysEnum, DateTime> DateAttributes { get; set; }
    public Dictionary<MyNumAttributeKeysEnum, long> NumericAttributes { get; set; }

    public string Name { get; set; }
    public string Id{ get; set; }
Run Code Online (Sandbox Code Playgroud)

选项2:将所有属性转换为字符串

public class MyObject
{
    public Dictionary<MyAttributeKeysEnum, string> MyAttributes { get; set; }

    public string Name { get; set; }
    public string Id{ get; set; }
Run Code Online (Sandbox Code Playgroud)

选项3:将它们保留为对象,让客户为铸造和转换而烦恼

public class MyObject
{
    public Dictionary<MyAttributeKeysEnum, object> MyAttributes …
Run Code Online (Sandbox Code Playgroud)

c# oop wcf propertybag

11
推荐指数
1
解决办法
3057
查看次数

C#缺乏静态继承 - 我该怎么办?

好吧,你可能知道,在C#中不可能进行静态继承.我明白,但是我坚持我的程序开发.

我会尽量让它变得简单.让我们说我们的代码需要管理在某些机场展示飞机的物体.要求如下:

  • 所有飞机都有共享的成员和方法

  • 有许多类型的飞机,每种类型可能有自己的额外方法和成员.每种飞机类型可以有许多实例.

  • 每种飞机类型必须具有此类型的友好名称,以及有关此类型的更多详细信息.例如,名为F16的类将具有静态成员FriendlyName,其值为"Lockheed Martin F-16 Fighting Falcon".

  • 其他程序员应该能够添加更多的飞机,但必须强制执行以创建有关飞机类型的相同静态细节.

  • 在某些GUI中,应该有一种方法让用户看到可用类型列表(带有诸如FriendlyName之类的详细信息),并添加或删除飞机实例,保存,比方说,给某些XML文件.

所以,基本上,如果我可以强制继承类来实现静态成员和方法,我会强制使用类型的静态成员,例如FriendlyName.可悲的是,我做不到.

那么,这个场景的最佳设计是什么?

c# oop inheritance

7
推荐指数
1
解决办法
367
查看次数

SharePoint的CAML使用用户名查询"创建者"字段

嘿,我有一个管理员表单,他们插入一个用户名("域\名称"),代码获取并设置一些信息.

这是一个庞大的项目,一些列表包含用户名作为字符串("域\名称"),但有些列表只依赖于"创建者"列,该列是自动创建的.

我想知道使用用户名字符串查询这些列表的最快方法是什么.我尝试使用与我用于第一种列表的查询相同的查询,但它显然不起作用 -

<Where><Eq><FieldRef Name='UserName'/><Value Type='Text'>domain\\username</Value></Eq></Where>
Run Code Online (Sandbox Code Playgroud)

谢谢.

sharepoint caml

6
推荐指数
2
解决办法
4万
查看次数

如何在ListView中使UpdatePanel工作?

我有一个列表视图的页面,显示类似帖子的内容.在每个帖子上应该有一个"费率框",其工作方式类似于Facebook中的"赞"按钮.速率框是用户控件,其中包含更新面板.

如果我在页面中放置了一些随机值的控件它可以很好地工作 - 但是当我把它放在ListView中它应该位于的位置时,它将无法工作.正在调用该方法,但没有任何反应.

我简化了一些代码,以便更容易理解:

"价格框"控件:

    protected void OnRateClick(object sender, ImageClickEventArgs e)
    {
        Rate++;
        RateAmountLiteral.Text = Rate.ToString();
        RateButton.Visible = false;
        FeedbackLiteral.Visible = true;

        rateButtonPanel.Update();
    }
Run Code Online (Sandbox Code Playgroud)

ASCX:

<div class="rate_div">
    <asp:UpdatePanel ID="rateButtonPanel" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <fieldset>
                Rate:
                <asp:Literal ID="RateAmountLiteral" runat="server"></asp:Literal>
                <asp:ImageButton ID="RateButton" runat="server" ImageUrl="icn_rate.png"
                    OnClick="OnRateClick" />
                <asp:Literal ID="FeedbackLiteral" runat="server" Visible="false">Thanks for rating!</asp:Literal>
            </fieldset>
        </ContentTemplate>
    </asp:UpdatePanel>
</div>
Run Code Online (Sandbox Code Playgroud)

aspx(使用控件):

                     <asp:ListView ID="PostsView" runat="server" ItemPlaceholderID="itemPlaceHolder2"
                        <LayoutTemplate>
                            <div class="posts_div">
                                <asp:PlaceHolder ID="itemPlaceHolder2" runat="server" />
                            </div>
                        </LayoutTemplate>
                        <ItemTemplate>
                            <div class="post_div">
                                <div class="post_body">
                                    <%# CurrentPost.Body %>
                                </div>
                                <UC:RatingBox id="RatingBox" runat="server" …
Run Code Online (Sandbox Code Playgroud)

asp.net user-controls listview updatepanel

5
推荐指数
1
解决办法
1692
查看次数

如何在git中找到搜索提交的第二个父级?

在git中,您可以使用正则表达式查找上次合并提交:

git show :/^Merge

但是,我想找到该提交的第二个父级,但我似乎无法找到它的工作方式:

git show :/^Merge/^2

是否有任何语法允许我这样做?

我的最终目标是设置一个类似于的别名:

git diff :/^Merge/^2..HEAD

这将让我看到我的功能分支的差异很容易掌握.

git

3
推荐指数
1
解决办法
126
查看次数

如何使用C#下载具有正确编码的HTML页面?

我需要一个获取页面链接并返回此页面标题的方法.

我用过WebClient -

        var webClient = new WebClient();
        var htmlString = webClient.DownloadString(_link);
Run Code Online (Sandbox Code Playgroud)

它运作良好,但它失败了外语编码.我得到问号和奇怪的字符而不是我需要的文字.

是否有通用的方法来识别页面的编码并使用它?我需要它来支持大多数编码,如果不是全部的话.

c# encoding screen-scraping

2
推荐指数
1
解决办法
2053
查看次数