为什么ReSharper会判断我这个代码?
private Control GetCorrespondingInputControl(SupportedType supportedType, object settingValue)
{
this.ValidateCorrespondingValueType(supportedType, settingValue);
switch(supportedType)
{
case SupportedType.String:
return new TextBox { Text = (string)settingValue };
case SupportedType.DateTime:
return new MonthPicker { Value = (DateTime)settingValue, ShowUpDown = true };
default:
throw new ArgumentOutOfRangeException(string.Format("The supported type value, {0} has no corresponding user control defined.", supportedType));
}
}
private void ValidateCorrespondingValueType(SupportedType supportedType, object settingValue)
{
Type type;
switch(supportedType)
{
case SupportedType.String:
type = typeof(string);
break;
case SupportedType.DateTime:
type = typeof(DateTime);
break;
default:
throw new ArgumentOutOfRangeException(string.Format("The supported …Run Code Online (Sandbox Code Playgroud) 对于相同类型,KeyValuePair列表和Dictionary之间有什么区别?是否有适当的时间使用其中一个?
我想在运行时在代码中执行以下操作:
<DataTemplate x:Key="lightGreenRectangle">
<Rectangle Fill="LightGreen"/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
到目前为止我有:
public DataTemplate GetColouredRectangleInDataTemplate(Color colour)
{
DataTemplate dataTemplate = new dataTemplate();
return dataTemplate;
}
Run Code Online (Sandbox Code Playgroud)
救命?我知道这不是设计控件样式的最优雅方式,但我想指定颜色的组件有一个名为"PointTemplate"的属性,类型为DataTemplate.
我在Visual Studio Online中创建了一个Build Definition,它指向BitBucket上托管的"External Git"存储库.详细信息在"存储库"选项卡下设置如下:

当我手动排队构建时,使用"队列构建..."按钮,一切都按预期工作.我的日志如下:
2015-07-22T07:07:50.0285647Z Syncing repository: NxGN.OpenCast (Git)
2015-07-22T07:07:53.6355527Z Checking out origin/dev to C:\a\6268f160\NxGN.OpenCast
2015-07-22T07:07:53.9928992Z Checked out branch dev for repository NxGN.OpenCast at commit 9a658c94a1045df5656a654c780f5b7d1c2809f4
Run Code Online (Sandbox Code Playgroud)
我的问题是,对于预定的构建,配置如
它失败并带有以下日志:
2015-07-22T07:20:24.0976453Z Syncing repository: NxGN.OpenCast (Git)
2015-07-22T07:20:26.6424255Z Checking out +origin/dev to C:\a\6268f160\NxGN.OpenCast
2015-07-22T07:20:26.6724252Z ##[error]No valid git object identified by '+origin/dev' exists in the repository.
Run Code Online (Sandbox Code Playgroud)
我试图指定分支为dev,origin/dev,refs/heads/dev,所有这些地方的+在生产日志中的分支名称的开头.
我究竟做错了什么?
git deployment continuous-integration automation visual-studio
我在一个项目上运行代码分析,我得到一个警告说
CA1020:Microsoft.Design:考虑将{some namespace}中定义的类型与另一个名称空间合并.{some namespace}
为什么我这样做?拥有太多名称空间是否有负面影响?
我有一个Dictionary<Guid, ElementViewModel>.(ElementViewModel是我们自己的复杂类型.)我使用股票标准将项目添加到字典中items.Add(Guid.NewGuid, new ElementViewModel() { /*setters go here*/ });,
稍后我会删除部分或全部这些项目.
我的ElementViewModel的简单视图是这样的:
class ElementViewModel
{
Guid Id { get; set; }
string Name { get; set; }
int SequenceNo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
值得一提的是,如果发生移动和复制等其他操作,则在添加后,SequenceNos在集合中被压缩.{1,5,6} - > {1,2,3}
我的删除操作的简单视图是:
public void RemoveElementViewModel(IEnumerable<ElementViewModel> elementsToDelete)
{
foreach (var elementViewModel in elementsToDelete)
items.Remove(elementViewModel.Id);
CompactSequenceNumbers();
}
Run Code Online (Sandbox Code Playgroud)
我将用一个例子说明问题:
我在字典中添加了3个项目:
var newGuid = Guid.NewGuid();
items.Add(newGuid, new MineLayoutElementViewModel { Id = newGuid, SequenceNo = 1, Name = "Element 1" });
newGuid = Guid.NewGuid();
items.Add(newGuid, …Run Code Online (Sandbox Code Playgroud) 我正在研究一项手术的表现.我正在迭代集合中的一部分项目.我使用Linq查询过滤此集合.它基本上看起来像这样:
var filteredItems = items.Where(x => x.PropertyToFilterOn == filterValue);
foreach (var filteredItem in filteredItems)
{
// do something to the filtered item
}
Run Code Online (Sandbox Code Playgroud)
如果我用Select而不是Where我实现同样的事情.哪个更好用,有什么区别?
这是好习惯吗?我有3个DataGridView,我希望有一个工具允许用户通过单击列标题对数据进行排序.我可以为每个DataGridView的ColumnHeaderMouseClick事件创建一个事件处理程序,但我做了一个:
private void dataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
SortDataGridView((sender as DataGridView), e.ColumnIndex);
}
Run Code Online (Sandbox Code Playgroud)
SortDataGridView看起来像这样:
/// <summary>
/// Sorts a given DataGridView by a column given by its columnIndex.
/// Default sort (if it isn't currently sorted) is Ascending. If it's
/// already sorted Ascending, change it to Descending. If it is Descending,
/// change it to Ascending.
/// </summary>
/// <param name="dataGridViewToSort">The DataGridViewToSort</param>
/// <param name="columnIndexToSortBy">The index of the column which we want to sort by in the DataGridView.</param>
private …Run Code Online (Sandbox Code Playgroud) C#:我有一组对象.T有2个属性.属性A和属性B.此集合需要遵守的规则是A和B的值组合在集合中必须是唯一的.换句话说,A和B需要用作复合主键.
在Linq有一个操作我可以用来检查这种情况吗?我希望它会像
if (items.Select(x => x.Name).Distinct().Count() != items.Select(x => x.Name).Count())
Run Code Online (Sandbox Code Playgroud)
上面的陈述是我如何检查集合中是否有重复名称的项目,但我不知道如何为多个属性执行此操作.
我有一个List<>自定义对象.此自定义类型具有一个属性Name,该属性在列表中应该是唯一的.换句话说,列表中没有2个项目的Name属性应该具有相同的值.
当我验证此列表时,我想检索有问题的项目.是否有Linq操作允许我这样做?
我希望有类似的东西
listOfItems.Where(x => x.Name.Equals(/*anything else in this list with the same value for name */)
Run Code Online (Sandbox Code Playgroud)
基本上,我试图避免针对列表中的每个项目(在嵌套的foreach中)检查整个列表:
private IList<ICustomObject> GetDuplicatedTypeNames(IList<ICustomObjects> customObjectsToFindDuplicatesIn)
{
var duplicatedList = new List<ICustomObject>();
foreach(var customObject in customObjectsToFindDuplicatesIn)
foreach(var innerCustomObject in customObjectsToFindDuplicatesIn)
if (customObject == innerCustomObject && customObject .Name.Equals(innerCustomObject.Name))
duplicatedList.Add(customObject);
return duplicatedList;
}
Run Code Online (Sandbox Code Playgroud)
(编辑)注意:我被限制使用域<>按域规则,并且使用字典<>不是一个选项.
c# ×8
linq ×3
dictionary ×2
.net ×1
automation ×1
collections ×1
datatemplate ×1
deployment ×1
git ×1
hashtable ×1
namespaces ×1
performance ×1
resharper ×1
select ×1
telerik ×1
winforms ×1
wpf ×1