小编Lou*_*hys的帖子

我可以以原始形式(例如包括引号)获取我的申请的论据吗?

我有一个.Net应用程序,它接受一堆命令行参数,处理其中一些,并将其余部分用作另一个应用程序的参数

例如

MyApp.exe foo1 App2.exe arg1 arg2 ...
Run Code Online (Sandbox Code Playgroud)

MyApp.exe是我的应用程序, foo1是我的应用程序关心的参数.App2.exe是另一个应用程序,我的应用程序将运行带有arg1 arg2等的App2作为参数.

目前我的应用程序只是使用这样的东西运行App2.exe

Process.Start(args[1], String.Join(" ", args.Skip(2)).因此上面的命令将正确运行:带有参数"arg1 arg2"的App2.exe.但是,请考虑这样的事情

MyApp.exe foo1 notepad.exe "C:\Program Files\readme.txt"
Run Code Online (Sandbox Code Playgroud)

上面的代码不会知道引号,并将使用参数C:\ Program Files\readme.txt(不带引号)运行notepad.exe.我该如何解决这个问题?

.net c# processstartinfo console-application command-line-arguments

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

GIt - 当我修改代码时如何创建和切换到分支?

我在掌握时写了一些代码,并意识到我正在做一些我不想放入大师的实验.阅读本文档,似乎我应该这样做

git checkout -b experiment
Run Code Online (Sandbox Code Playgroud)

在我开始编写代码之前.我现在该怎么办?我担心如果我执行上面的命令,会发生什么

  1. experiment将创建一个分支(从主服务器复制)
  2. Git将从这个新分支结账,这意味着我将失去工作.

如何在不影响主人的情况下将我当前的工作提交给新分支?

git version-control

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

在 Visual Studio 中使用快捷方式自动生成代码?

我注意到当你输入 ctor 然后点击Tab按钮时,VS 会自动为你创建一个构造函数框架。

我还在截屏视频中看到,演讲者可以生成除其他外的 : Console.WriteLine,以及使用键盘快捷键的所有界面方法的骨架方法。

但是,我无法得到他输入的关键字。

这个功能叫什么?我在哪里可以看到关键字列表和效果?

.net keyboard-shortcuts visual-studio-2010 visual-studio

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

C#中有两个if和另一个。怎么了?

例如:

if(cond1)
if(cond2) DoCond2();
else DoCond3();
Run Code Online (Sandbox Code Playgroud)

else语句是否将被视为第一个if或第二个的其他语句if?为什么?(是否从语法角度进行解释?)答案在其他基于C的编程语言(例如C和Java)中是否也相同?

注意:这不是作业。我可以很容易地对其进行测试,如果我不喜欢默认行为,可以使用大括号,但是我对此感到好奇。

编辑们,显然在原始示例中有一个非常严重的错误。请再检查一次。我知道,这很尴尬。抱歉。

c# if-statement

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

如何以编程方式更改端点的身份配置?

我正在尝试创建一个工具来以编程方式修改我的服务的app.config文件.代码是这样的,

string _configurationPath = @"D:\MyService.exe.config";
ExeConfigurationFileMap executionFileMap = new ExeConfigurationFileMap();
executionFileMap.ExeConfigFilename = _configurationPath;

System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(executionFileMap, ConfigurationUserLevel.None);
ServiceModelSectionGroup serviceModeGroup = ServiceModelSectionGroup.GetSectionGroup(config);

foreach (ChannelEndpointElement endpoint in serviceModeGroup.Client.Endpoints)
{
    if (endpoint.Name == "WSHttpBinding_IMyService")
    {
        endpoint.Address = new Uri("http://localhost:8080/");
    }
}

config.SaveAs(@"D:\MyService.exe.config");
Run Code Online (Sandbox Code Playgroud)

但是我在更改端点的身份时遇到了问题.

我希望有类似的东西:

<identity>
     <userPrincipalName value="user@domain.com" />
</identity>
Run Code Online (Sandbox Code Playgroud)

我的端点配置,但当我尝试:

endpoint.Identity = new IdentityElement(){
    UserPrincipalName = UserPrincipalNameElement() { Value = "user@domain.com" }
}
Run Code Online (Sandbox Code Playgroud)

它失败,因为属性endpoint.IdentityidentityElement.UserPrincipalName是readonly(我不知道为什么,因为entity.Address不是只读的)

有没有办法解决这个限制并设置身份配置?

.net configuration wcf app-config

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

我如何"ASCII装甲"我的MemoryStream?

我如何使用ASCII装甲内存流?ASCII装甲是将二进制数据编码为可打印的ASCII字符串的过程.这用于例如加密.

在C#中是否有任何标准方法可以实现此解码支持?像API一样?否则,怎么办呢?

.net c# string encoding ascii

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

它已经启动时可以停止Visual Studio编译吗?

有时我错误地在Visual Studio中按下build(或Debug/F5),这会导致构建过程.我不知道如何阻止这一点,停止调试按钮被禁用,通常我必须等到编译完成才能再次编码(如果我的解决方案有相当多的csproj,这可能需要一段时间).

知道如何停止编译过程吗?

.net msbuild visual-studio-2010 visual-studio

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

如果存在平局,我如何指定使用Linq ThenBy子句?

我有一个与OrderBy和ThenBy的linq查询(不是数据库相关的)

var sortedList = unsortedList
                .OrderBy(foo => foo.Bar) //this property access is relatively fast
                .ThenBy(foo => foo.GetCurrentValue()) //this method execution is slow
Run Code Online (Sandbox Code Playgroud)

获得foo.Bar很快,但执行foo.GetCurrentValue()速度很慢.返回值仅在某些成员具有相等的Bar值时才重要,这种情况很少发生,但在发生这种情况时需要考虑.是否可以选择仅在需要在相等Bar值的情况下进行平局时执行ThenBy子句?(即如果foo.Bar值是唯一的,则不会执行).

另外,实际上Bar也有点慢,所以最好不要为同一个对象调用它两次.

.net c# linq sorting ienumerable

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

如果keySelector缓慢,如何优化LINQ OrderBy?

我想使用可能需要一些时间来计算的值对对象列表进行排序。现在我有这样的代码:

public IEnumerable<Foo> SortFoo(IEnumerable<Foo> original)
{
    return foos.OrderByDescending(foo => CalculateBar(foo));
}

private int CalculateBar(Foo foo)
{
    //some slow process here
}
Run Code Online (Sandbox Code Playgroud)

上面的代码的问题在于,它将为每个项目多次调用计算值,这不好。可能的优化是使用缓存的值(可能是字典),但这将意味着SortFoo在每次排序后都必须清除缓存(以避免内存泄漏,我确实希望在每次SortFoo调用时重新计算该值)。

有没有更清洁,更优雅的解决方案?

.net c# linq sorting sql-order-by

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

我应该在安装程序或测试用例中初始化模拟对象吗?

在使用mock/fake对象进行单元测试时,我想知道在SetUp或测试方法本身中初始化模拟是否更为可取,如果我的测试类包含测试同一类的方法(因此,所需的假对象应该是对于所有测试案例都是一样的).像这样的东西:

class FooTests
{
    Mock<IBar> mockBar;
    Foo fooUnderTest;

    [SetUp]
    public void Setup()
    {
        mockBar = new Mock<IBar>();
        fooUnderTest = new fooUnderTest(mockBar.Object);
    }

    [Test]
    public void MyTest()
    {
        //setup mock methods
        mockBar.SetUp( ... )

        //test
        fooUnderTest.TestSomething()

        //assert something here

    }
}
Run Code Online (Sandbox Code Playgroud)

看起来这会阻止我们在每个测试用例中将代码复制到mockBar和fooUnderTest,但缺点是我必须声明类变量mockBar和fooUnderTest(或者这真的是一个缺点?),如果我有问题想要有一些特殊的设置(例如,如果在某个测试用例中我想要覆盖Foo的一些虚拟方法).有什么建议什么是最佳做法?

tdd unit-testing mocking

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