我们最近从SVN转到git.我们使用主"发布"分支(主),以及开发人员正在处理的每个功能的功能分支.在TeamCity中,我们为每个功能分支都有一个项目,当然还有一个主项目.
当我们使用SVN时,每当有人从master合并到他的功能分支或反之亦然时,TeamCity会将合并视为一次提交.现在,使用git,每次合并都会导致TeamCity显示此合并带来的所有提交.
这会导致一些问题,例如当有人从master合并到他的功能分支时,现在他的TeamCity项目由于合并而显示"283挂起的更改",如果构建失败,将通知这些更改的作者,就好像他们做了功能分支上的这些更改.
有没有办法告诉TeamCity将git合并视为单个提交?
我们可以使用压缩合并来解决它,但这是我们真正想要避免的.
假设我们有一系列类(卡片,为了它),我们需要根据一些标识符实例化它们.工厂方法如下所示:
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个键吗?).
这种情况下的最佳做法是什么?
我有一个第三方应用程序,它为对象提供了许多"属性",它们只是(字符串)键和值的对.值类型可以是字符串,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#中不可能进行静态继承.我明白,但是我坚持我的程序开发.
我会尽量让它变得简单.让我们说我们的代码需要管理在某些机场展示飞机的物体.要求如下:
所有飞机都有共享的成员和方法
有许多类型的飞机,每种类型可能有自己的额外方法和成员.每种飞机类型可以有许多实例.
每种飞机类型必须具有此类型的友好名称,以及有关此类型的更多详细信息.例如,名为F16的类将具有静态成员FriendlyName,其值为"Lockheed Martin F-16 Fighting Falcon".
其他程序员应该能够添加更多的飞机,但必须强制执行以创建有关飞机类型的相同静态细节.
在某些GUI中,应该有一种方法让用户看到可用类型列表(带有诸如FriendlyName之类的详细信息),并添加或删除飞机实例,保存,比方说,给某些XML文件.
所以,基本上,如果我可以强制继承类来实现静态成员和方法,我会强制使用类型的静态成员,例如FriendlyName.可悲的是,我做不到.
那么,这个场景的最佳设计是什么?
嘿,我有一个管理员表单,他们插入一个用户名("域\名称"),代码获取并设置一些信息.
这是一个庞大的项目,一些列表包含用户名作为字符串("域\名称"),但有些列表只依赖于"创建者"列,该列是自动创建的.
我想知道使用用户名字符串查询这些列表的最快方法是什么.我尝试使用与我用于第一种列表的查询相同的查询,但它显然不起作用 -
<Where><Eq><FieldRef Name='UserName'/><Value Type='Text'>domain\\username</Value></Eq></Where>
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有一个列表视图的页面,显示类似帖子的内容.在每个帖子上应该有一个"费率框",其工作方式类似于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) 在git中,您可以使用正则表达式查找上次合并提交:
git show :/^Merge
但是,我想找到该提交的第二个父级,但我似乎无法找到它的工作方式:
git show :/^Merge/^2
是否有任何语法允许我这样做?
我的最终目标是设置一个类似于的别名:
git diff :/^Merge/^2..HEAD
这将让我看到我的功能分支的差异很容易掌握.
我需要一个获取页面链接并返回此页面标题的方法.
我用过WebClient -
var webClient = new WebClient();
var htmlString = webClient.DownloadString(_link);
Run Code Online (Sandbox Code Playgroud)
它运作良好,但它失败了外语编码.我得到问号和奇怪的字符而不是我需要的文字.
是否有通用的方法来识别页面的编码并使用它?我需要它来支持大多数编码,如果不是全部的话.
c# ×4
git ×2
oop ×2
asp.net ×1
caml ×1
encoding ×1
inheritance ×1
listview ×1
propertybag ×1
sharepoint ×1
teamcity ×1
updatepanel ×1
wcf ×1