我有以下方法将对象保存到文件:
// Save an object out to the disk
public static void SerializeObject<T>(this T toSerialize, String filename)
{
XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType());
TextWriter textWriter = new StreamWriter(filename);
xmlSerializer.Serialize(textWriter, toSerialize);
textWriter.Close();
}
Run Code Online (Sandbox Code Playgroud)
我承认我没有写它(我只将其转换为带有类型参数的扩展方法).
现在我需要它将xml作为字符串返回给我(而不是将其保存到文件中).我正在研究它,但我还没想到它.
我认为对于熟悉这些对象的人来说这可能很容易.如果不是,我最终会弄明白.
我有一个开发数据库,经常从Visual Studio数据库项目(通过TFS自动构建)重新部署.
有时当我运行我的构建时,我收到此错误:
ALTER DATABASE failed because a lock could not be placed on database 'MyDB'. Try again later.
ALTER DATABASE statement failed.
Cannot drop database "MyDB" because it is currently in use.
Run Code Online (Sandbox Code Playgroud)
我试过这个:
ALTER DATABASE MyDB SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)
但我仍然无法删除数据库.(我的猜测是大多数开发人员都dbo
可以访问.)
我可以手动运行SP_WHO
并开始查杀连接,但我需要一种自动方式在自动构建中执行此操作.(虽然这次我的连接是我试图丢弃的数据库中唯一的连接.)
是否有一个脚本可以删除我的数据库,无论谁连接?
我正在创建一个Prism项目模板,模板效果很好.但是在我使用模板创建项目之后,一些文件看起来像这样:
尽管外表,一切都很好.
如果我执行Rebuild All,我会看到解决方案构建没有错误:
但重建所有都没有摆脱编辑器窗口中显示的"错误".(请注意,实际的错误窗口不会显示任何错误.)
我可以清理,重建,关闭和打开文件,它不会修复突出显示.
但是,如果我关闭解决方案并重新打开它,一切都很好:
我的问题:
理想情况下,我的模板或IWizard会有一种方法告诉ReSharper重新加载突出显示的引用.
我知道我可以关闭ReSharper 然后再打开它会修复它,但我宁愿不这样做.
是否有ReSharper命令只刷新这些东西?
resharper visual-studio-2010 project-template visual-studio visual-studio-extensions
有没有办法使用Tuple类,但提供其中的项目名称?
例如:
public Tuple<int, int, int int> GetOrderRelatedIds()
Run Code Online (Sandbox Code Playgroud)
返回OrderGroupId,OrderTypeId,OrderSubTypeId和OrderRequirementId的id.
让我的方法的用户知道哪个是哪个是很好的.(当你调用方法时,结果是result.Item1,result.Item2,result.Item3,result.Item4.不清楚哪一个是哪个.)
(我知道我可以创建一个类来保存所有这些ID,但是这些ID已经拥有了他们自己的类,并为这个方法的返回值创建一个类看起来很傻.)
我收到此错误:
找不到类型或命名空间名称'AutoMapper'(您是否缺少using指令或程序集引用?)
有趣的是,我已经在我的项目中有了这个参考:
这是我的代码:
using System.Collections.Generic;
using DataContract;
using SelectorDAL;
using AutoMapper;
namespace SpecimenSelect
{
public class SpecimenSelect : ISpecimenSelect
{
public SpecimenSelect()
{
SetupMaps();
}
private static void SetupMaps()
{
Mapper.CreateMap<SpecimenDetail, SpecimenDetailContract>();
}
Run Code Online (Sandbox Code Playgroud)
另一个奇怪的事情是我的解决方案中有两个其他项目都使用AutoMapper并引用完全相同的AutoMapper.dll文件.他们都完美无缺.
这是一个屏幕截图:
这是代码(编译好):
using System.Collections.Generic;
using AutoMapper;
using DataContract;
using SelectorDAL;
namespace PatientSelect
{
public class PatientSelect : IPatientSelect
{
public PatientSelect()
{
SetupMaps();
}
private void SetupMaps()
{
Mapper.CreateMap<Patient, PatientContract>();
Mapper.CreateMap<OrderedTest, OrderedTestsContract>();
Mapper.CreateMap<Gender, GenderContract>();
}
Run Code Online (Sandbox Code Playgroud)
两个引用似乎在属性页面上具有相同的数据.
我错过了什么?
我试过了:
AutoMapper.Mapper.CreateMap
)还有其他想法吗?
说我有以下课程:
public class ConfigItemType
{
public string Name { get; set; }
public double SomeOtherThing { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我列出以下类(List<ConfigItemType> MyList
)
现在我有一个带有以下签名的方法:
void AggregateValues(string someUnrelatedValue, params string[] listGoesHere)
Run Code Online (Sandbox Code Playgroud)
我如何能适应MyList
到listGoesHere
在使用值ConfigItemType.Name
作为PARAMS字符串数组?
我很确定Linq可以做到这一点....但是MyList
没有一个select
方法(这是我会用的).
我的系统管理员重命名了我的电脑.那么它是"MyLaptop2"的地方现在只是"MyLaptop".
所以现在我的所有源代码控制绑定和签出文件都在寻找带有"MyLaptop2"的工作区.
有没有办法将该工作区重定向到我重命名的(但仍然是相同的)计算机?
我遵循了"不要过早优化"的口头禅并使用Entity Framework编写了我的WCF服务.
但是,我描述了性能和实体框架太慢了.(我的应用程序在大约1.2秒内处理2条消息,其中我正在重写的(传统)应用程序同时执行5-6条消息.(旧应用程序调用sprocs进行数据库访问.)
我的分析指向实体框架占用每条消息的大部分时间.
那么,我的选择是什么?
那里有更好的ORM吗?
(只支持正常读取和写入对象的东西,并且它很快...)
有没有办法让实体框架更快?
(注意:当我说速度更快时,我的意思是从长远来看,而不是第一次调用.(第一次调用很慢(消息为15秒),但这不是问题.我只需要它快速休息的消息.)
一些神秘的第三选项,将帮助我提高我的服务速度.
注意:我的大多数数据库交互都是创建和更新.我做的很少选择和删除.
我有一个配置文件,我需要加载作为我正在编写的DLL的执行的一部分.
我遇到的问题是,当应用程序运行时,我放置dll和配置文件的位置不是"当前位置".
例如,我把dll和xml文件放在这里:
D:\ Program Files\Microsoft Team Foundation Server 2010\Application Tier\Web Services\bin\Plugins
但是,如果我尝试像这样引用xml文件(在我的dll中):
XDocument doc = XDocument.Load(@".\AggregatorItems.xml")
Run Code Online (Sandbox Code Playgroud)
然后.\ AggregatorItems.xml转换为:
C:\ WINDOWS\SYSTEM32\INETSRV\AggregatorItems.xml
所以,我需要找到一种方法(我希望)知道当前正在执行的dll所在的位置.基本上我正在寻找这个:
XDocument doc = XDocument.Load(CoolDLLClass.CurrentDirectory+@"\AggregatorItems.xml")
Run Code Online (Sandbox Code Playgroud) 我需要从另一个字符串中删除第一个(并且只是第一个)字符串.
这是替换字符串的示例"\\Iteration"
.这个:
ProjectName\\Iteration\\Release1\\Iteration1
会成为这样的:
ProjectName\\Release1\\Iteration1
这里有一些代码执行此操作:
const string removeString = "\\Iteration";
int index = sourceString.IndexOf(removeString);
int length = removeString.Length;
String startOfString = sourceString.Substring(0, index);
String endOfString = sourceString.Substring(index + length);
String cleanPath = startOfString + endOfString;
Run Code Online (Sandbox Code Playgroud)
这似乎是很多代码.
所以我的问题是:是否有更清晰/更可读/更简洁的方法来做到这一点?