小编Kei*_*ith的帖子

643
推荐指数
15
解决办法
33万
查看次数

在C#中复制目录的全部内容

我想在C#中将目录的全部内容从一个位置复制到另一个位置.

似乎没有办法使用System.IO没有大量递归的类来完成此操作.

VB中有一个方法,如果我们添加一个引用,我们就可以使用它Microsoft.VisualBasic:

new Microsoft.VisualBasic.Devices.Computer().
    FileSystem.CopyDirectory( sourceFolder, outputFolder );
Run Code Online (Sandbox Code Playgroud)

这似乎是一个相当丑陋的黑客.有没有更好的办法?

.net c# copy

497
推荐指数
8
解决办法
33万
查看次数

如何比较C#中的标志?

我下面有一个标志枚举.

[Flags]
public enum FlagTest
{
    None = 0x0,
    Flag1 = 0x1,
    Flag2 = 0x2,
    Flag3 = 0x4
}
Run Code Online (Sandbox Code Playgroud)

我无法将if语句评估为true.

FlagTest testItem = FlagTest.Flag1 | FlagTest.Flag2;

if (testItem == FlagTest.Flag1)
{
    // Do something,
    // however This is never true.
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

.net c# enums flags attributes

149
推荐指数
9
解决办法
8万
查看次数

什么是拳击和拆箱以及有什么权衡取舍?

我正在寻找一个清晰,简洁和准确的答案.

理想情况下,作为实际答案,虽然欢迎链接到良好的解释.

language-agnostic boxing unboxing glossary

128
推荐指数
4
解决办法
5万
查看次数

你如何使用插值的逐字字符串?

在C#6中有一个新功能:插值字符串.

这些允许您将表达式直接放入代码中,而不是依赖于索引:

string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
Run Code Online (Sandbox Code Playgroud)

变为:

string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
Run Code Online (Sandbox Code Playgroud)

但是,我们在使用逐字符串(主要是SQL语句)的多行中有很多字符串,如下所示:

string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
Run Code Online (Sandbox Code Playgroud)

将这些恢复为常规字符串似乎很麻烦:

string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
Run Code Online (Sandbox Code Playgroud)

如何同时使用逐字和插值字符串?

c# string-interpolation verbatim-string c#-6.0

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

为什么这个异步操作会挂起?

我有一个多层.Net 4.5应用程序调用一个方法使用C#的新asyncawait关键字挂起,我不明白为什么.

在底部我有一个异步方法来扩展我们的数据库实用程序OurDBConn(基本上是底层DBConnectionDBCommand对象的包装器):

public static async Task<T> ExecuteAsync<T>(this OurDBConn dataSource, Func<OurDBConn, T> function)
{
    string connectionString = dataSource.ConnectionString;

    // Start the SQL and pass back to the caller until finished
    T result = await Task.Run(
        () =>
        {
            // Copy the SQL connection so that we don't get two commands running at the same time on the same open connection
            using (var ds = new OurDBConn(connectionString))
            {
                return function(ds);
            } …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous task-parallel-library async-await c#-5.0

96
推荐指数
4
解决办法
5万
查看次数

如何向复制的Web文本添加额外信息

一些网站现在使用来自Tynt的JavaScript服务,该文本将文本附加到复制的内容.

如果您使用此网站从网站复制文本然后粘贴,则会获得指向文本底部原始内容的链接.

Tynt也会跟踪它.这是一个很好的技巧.

他们这样做的脚本令人印象深刻 - 而不是试图操纵剪贴板(只有旧版本的IE允许他们默认执行,哪些应该总是关闭)他们操纵实际选择.

因此,当您选择一个文本块时,额外内容将作为隐藏<div>添加到您的选择中.粘贴时,将忽略额外的样式,并显示额外的链接.

这对于简单的文本块实际上相当容易,但是当您考虑在不同浏览器中复杂HTML中的所有选择时,这是一场噩梦.

我正在开发一个Web应用程序 - 我不希望任何人能够跟踪复制的内容,我希望额外的信息包含一些上下文,而不仅仅是一个链接.在这种情况下,Tynt的服务并不合适.

有没有人知道一个开源JavaScript库(可能是一个jQuery插件或类似的)提供类似的功能,但不暴露内部应用程序数据?

javascript clipboard

89
推荐指数
2
解决办法
4万
查看次数

任何人都知道缺乏枚举通用约束的好方法吗?

我想要做的是这样的:我有枚举标记值的枚举.

public static class EnumExtension
{
    public static bool IsSet<T>( this T input, T matchTo ) 
        where T:enum //the constraint I want that doesn't exist in C#3
    {    
        return (input & matchTo) != 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

那么我可以这样做:

MyEnum tester = MyEnum.FlagA | MyEnum.FlagB

if( tester.IsSet( MyEnum.FlagA ) )
    //act on flag a
Run Code Online (Sandbox Code Playgroud)

不幸的是,C#的通用,其中约束没有枚举限制,只有类和结构.C#不会将枚举视为结构(即使它们是值类型),因此我无法像这样添加扩展类型.

有没有人知道解决方法?

.net c# enums flags

87
推荐指数
6
解决办法
2万
查看次数

条件Linq查询

我们正在研究日志查看器.该用户可以选择按用户,严重程度等进行过滤.在Sql中我会添加到查询字符串,但我想用Linq来做.我怎样才能有条件地添加where-clause?

c# linq .net-3.5 linq-to-sql

87
推荐指数
6
解决办法
8万
查看次数

如何在webform中包含局部视图

我正在编程的一些网站正在使用ASP.NET MVC和WebForms.

我有局部视图,我想将其包含在webform中.部分视图有一些必须在服务器中处理的代码,因此使用Response.WriteFile不起作用.它应该与禁用javascript一起使用.

我怎样才能做到这一点?

asp.net asp.net-mvc webforms partial-views

78
推荐指数
5
解决办法
5万
查看次数