我已经做了很多搜索,没有太多运气找到一些有凝聚力的东西.我是一个相对较新的开发人员,刚刚开始我的第一个职业发展职位.我知道即使在基础知识领域我也有很多东西可以学习.基于收听PodCasts,阅读博客,论文等; 我已经明白,在设计和构建软件时要牢记关注点,IOC,依赖注入似乎是正确的做法.我将这些概念处于非常高的水平,并希望尽可能多地接近我对此的处理方式.
所以,这就是问题所在.我怎么这样设计东西?我在一个团队中工作,这个团队继承了一个基于网络的产品,这个产品非常紧密地联系在一起,文档记录很差,并且通常不容易维护一些软件.Evryone似乎喜欢删除这对夫妇的想法.他们喜欢开发自动化测试的想法(从我读过的内容来看,使用松散耦合的组件更容易).似乎没有人知道该怎么做.我愿意接受它,但我需要指导.我发现的所有东西似乎总是以非常高的方式谈论这些东西,或相反,只关注整体的一小部分.我想要一本关于一本书,一系列教程,视频或SOMETHING的指导,它们采用了一些现实世界的例子,并向您展示了如何应用这些原则.理想的情况下,
我知道这有点啰嗦,我只是有点沮丧,因为我发现的大部分综合训练材料根本就没有讨论这个话题,有人从一天开始就可以应用好的做法一.
谢谢大家的时间.
史蒂夫
我有一个简单的类定义为:
public class IndexEntry
{
public bool HighScore { get; set; }
public List<IndexEntry> SubEntries { get; set; }
//Other properties, etc...
}
Run Code Online (Sandbox Code Playgroud)
我现在需要搜索List以找到其HighScore属性设置为true的一个项目.既然它不是一个平面列表,而是一个层次结构,它可以是一个未知数量级别的深度,因为我正在寻找的项目可能包含在任何一个SubEnties列表中,我不能做一个简单的Lambda像这个:
var foundHighScore = myList.FirstOrDefault(IE => IE.HighScore == true);
Run Code Online (Sandbox Code Playgroud)
这是我的代码.我知道这很难看(至少对我而言似乎这样).它有效,但在一个甚至远程大型列表上的速度很慢,我确信必须有更好的方法.
private IndexEntry GetHighScoreEntry(IEnumerable<IndexEntry> entryList)
{
IndexEntry result = null;
IndexEntry recursiveResult = null;
foreach (IndexEntry currentEntry in entryList)
{
if (currentEntry.HighScore)
{
result = currentEntry;
break; //Don't need to look anymore, we found our highscore.;
}
else
{
if ((currentEntry.SubEntries == null) || (currentEntry.SubEntries.Count < …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Prism和MVVM模式来开发应用程序.在我的UI中,我定义了上一个和下一个按钮.为了在调用Web服务中使用,我已经定义了一个枚举,它将告诉我需要遍历的方向.因此,在这种情况下,按钮直接映射到枚举值.枚举定义非常简单,如下:
namespace CodeExpert.Book.Helpers
{
public enum BookDirection { Previous = -1, NotSet = 0, Next = 1, }
}
Run Code Online (Sandbox Code Playgroud)
我在我的ViewModel中定义了我的命令和委托,并正确分配了属性.相关代码是:
public DelegateCommand PreviousNextCommand { get; set; }
public IndexEntriesViewModel(GlobalVariables globalVariable, IndexEntryOperations currentOperator)
{
//a bunch of initialization code.
InitializeCommands();
}
void InitializeCommands()
{
PreviousNextCommand =
new DelegateCommand(OnPreviousNextCommandExecute);
}
private void OnPreviousNextCommandExecute(BookDirection parameter)
{
//Code to process based on BookDirection
}
Run Code Online (Sandbox Code Playgroud)
因此,基于此配置,我想将BookDirection枚举值传递给CommandParameter.但是,我无法为此获得XAML.这是我试过的XAML,对我来说似乎是最正确的:
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="CodeExpert.Book.Views.Index"
d:DesignWidth="1024"
d:DesignHeight="768"
xmlns:helpers="clr-namespace:CodeExpert.Book.Helpers"
xmlns:command="clr-namespace:Microsoft.Practices.Composite.Presentation.Commands;assembly=Microsoft.Practices.Composite.Presentation"
xmlns:common="clr-namespace:System.Windows;assembly=System.Windows.Controls"
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
xmlns:input="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input">
<Button x:Name="ButtonPrevious"
HorizontalAlignment="Left"
Margin="2,1,0,1" …Run Code Online (Sandbox Code Playgroud) 我是CodeRush的忠实粉丝,也是他们围绕模板的理念.在我目前的工作中,我们将进行大量的配对,并且共识是对ReSharper(v6)的偏好,这几乎让我处于一个我必须使用它的地方.
我不打算在这里开始CodeRush/Resharper战争.Resharper有很多值得关注的东西,但有一件事我很难在ReSharper中过去.
ReSharper的Live模板机制很好,没有内置的概念来输入CodeRush的方式(至少不是我所知道的).一个简单的例子如下.生成以下代码:
public String MyStringProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)
在CodeRush中......我可以输入"as"(AutoProperty为'a',字符串为's'),然后只需更改属性名称即可.
在ReSharper中,我需要输入"prop"(对于Property),然后设置类型和名称.
ReSharper的实时模板中似乎没有关于类型感知或类型快捷方式的类似概念.因此,似乎没有类似于众多的两个和三个字符模板,以获得预先键入的变量,属性,方法等...
所以,最后问题毕竟是那个背景.在没有为每个模板/类型组合创建新的实时模板的情况下,有没有办法在ReSharper中复制"类型模板"这个概念?
我有一个简单的类定义为:
public class MyClass
{
//Some properties
public List<MyClass> SubEntries { get; set; }
//Some more properties
}
Run Code Online (Sandbox Code Playgroud)
在另一个类中,我有一个上面类型的列表.目前,我有一个严重的心理障碍.我只需要遍历列表并计算MyClass的所有出现次数.由于SubEntries属性可以包含0个或多个条目,这些条目本身可以包含0个或更多条目,因此我需要某种recursice方法,除非LINQ提供了执行此操作的机制.
任何帮助释放这种心理日志果酱将不胜感激.
我正在查看JSON.NET和ServiceStack.Text以将POCO对象序列化为JSON.JSON.NET似乎非常灵活,但性能成本有点高.ServiceStack.Text似乎提供了几乎所有我需要的更好的性能.ServiceStack似乎只缺少一件事......
如果我有一个包含枚举属性的对象,请说如下的枚举...
public enum PersonStatus
{
ActiveAgent,
InactiveAgent
}
public class Person
{
//A bunch of other properties
public PersonStatus Status { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我使用以下代码使用camelCase将ServiceStack配置设置为序列化:
ServiceStack.Text.JsConfig.EmitCamelCaseNames = true;
Run Code Online (Sandbox Code Playgroud)
我最终将Status属性序列化如下:
status:ActiveAgent
请注意,属性名称是camel case,但枚举值是PascalCase.
无论我使用ServiceStack.Text JsonSerializer还是,这种行为似乎都是一致的TypeSerializer.
在ServiceStack中是否有一种简单的方法来改变这种行为,以便值也是camelCase?
我正在开发一个具有所有功能和限制的Silverlight项目.这是对以前产品的更新.为了快速推向市场,其目的是尽可能多地维护后端(Web服务,数据库等).如果没有别的办法,我们要求只触及后端.我们主要专注于重写前端.很快就会有一个重要的行业会议,我们想要展示产品的早期外观.在官方发布之前可能还有一段时间做一些重新工作,但后端可能需要等到V2.
好的,所以我要做的就是使用MVVM模式和我负责的前端的数据绑定(MVVM模式由上面决定).我有一个pre-existig Web服务,提供一些XML.该XML的示例如下所示:
<CODEBOOKINDEX>
<ME Words="1" Score="25" Highscore="1">Main Entry Item
<NM>attack</NM>
<NM>cardiac</NM>
<NM>chest</NM>
<NM>effort</NM>
<NM>heart</NM>
<NM>pectoris</NM>
<NM>syndrome</NM>
<NM>vasomotor</NM>
<IE>413.9</IE>
<M1 Words="1" Score="25">An M1 Item (Same as ME, just first level Child)
<IE>557.1</IE>
</M1>
<M1 Words="1" Score="25">Another M1 Item
<IE>443.9</IE>
<M2 Words="1" Score="25">An M2 Item (again same as ME, just a child of an M1 item)
<CF>Arteriosclerosis,extremities</CF>
<IE>440.20</IE>
</M2>
</M1>
</ME></CODEBOOKINDEX>
Run Code Online (Sandbox Code Playgroud)
所以,我的问题,因为我想使用MVVM模式将其绑定到UI,在我看来,我需要将其转换为自定义对象.正如您所看到的,有许多"Entry"项,MainEntry(ME)和Subentries(本例中为M1或M2),这些都将包含某些其他节点(例如,它们都将具有IE节点),它们可以包含0个或更多其他节点类型(例如,它们可以包含或不包含一个或多个NM节点,或者它们可以包含或不包含一个CF节点).Whihc意味着(至少对我而言)我无法直接绑定到XML,因为:
因此,我正在尝试理解将此XML转换为可绑定对象的最佳方法,在我看来,这意味着将此XML转换为模型的对象,然后在该模型上覆盖视图模型.
这可以通过LINQ to XML查询轻松完成,还是我真的进入了ORM的领域,如NHibernate或Entity Framework(请不要讨论WHICH ORM的神圣战争)?
我刚刚成立,我将使用的UI控件是什么,我需要相当快速演示我的经理如何我要处理的翻译.
那么,真正的问题:
我正在ASMX Webservice(旧版.NET SOAP服务)中对XML文档进行一些预处理,以便最终在Silverlight前端使用.
我正在将该XML文档处理为POCO对象以便于使用.该对象定义如下:
public class CACDocument : ITextDocument
{
#region Properties
public string Title { get; set; }
public string Text { get; set; }
public List<Code> CodeList { get; set; }
public XElement FormatedText { get; set; }
#endregion
#region Constructor
public CACDocument()
{
CodeList = new List<Code>();
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
该对象中的Text属性包含基本格式化的文本(换行符,空格等等).提供该属性的XML节点如下所示:
<text>
A TITLE FOLLOWED BY two line breaks
Some text followed by a line break
Some more text that might extend for a paragraph or two …Run Code Online (Sandbox Code Playgroud) 有人可以指导我一个可以帮助我的例子或解释:
我觉得选项1最简单,但我很开放.
提前致谢.
我有一个简单的POCO类来保存从XML文件中提取的数据,定义如下:
public class Demographics
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string MiddleName { get; set; }
public string Gender { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个相当简单的XML文件(或者说在这种情况下是元素)来提取数据,定义如下:
<patient determinerCode="INSTANCE">
<name use="L">
<given>John</given>
<given qualifier="IN">Q.</given>
<family>Public</family>
</name>
<administrativeGenderCode code="F" displayName="Female"/>
</patient>
Run Code Online (Sandbox Code Playgroud)
我遇到的挑战是将中间的初始名称和/或名字输入到我班级的正确属性中.如您所见,名称节点内有两个给定节点,中间首字母由"IN"属性指定.是否有一个我在这里缺少的简单LINQ语法,或者我是否需要查询所有给定节点并枚举它们以正确放置每个节点?
我目前的代码如下所示:
private string GetInterfaceXmlData(XElement source)
{
//Source in this context represents the "patient" element as you see in the example.
//The NMSPC constant represents the namespace for …Run Code Online (Sandbox Code Playgroud) c# ×10
linq ×3
silverlight ×3
.net ×2
alt.net ×1
asmx ×1
autocomplete ×1
c#-3.0 ×1
coderush ×1
enums ×1
hierarchy ×1
json.net ×1
lambda ×1
linq-to-xml ×1
orm ×1
prism ×1
recursion ×1
resharper ×1
servicestack ×1
watermark ×1
web-services ×1
xaml ×1