小编naw*_*fal的帖子

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

结构体实现接口是否安全?

我似乎记得读过一些关于结构通过C#在CLR中实现接口有什么不好的东西,但我似乎无法找到任何关于它的东西.这不好吗?这样做会产生意想不到的后果吗?

public interface Foo { Bar GetBar(); }
public struct Fubar : Foo { public Bar GetBar() { return new Bar(); } }
Run Code Online (Sandbox Code Playgroud)

c# struct interface

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

除特定文件类型外,在特定文件夹下以递归方式正确忽略所有文件

我已经看到了类似的问题(1,23),但我不从他们那里得到一个妥善的解决办法.

除了特定的文件类型,我需要忽略特定文件夹下的所有文件.该文件夹是根路径的子目录.让我命名文件夹Resources.由于我不想让事情复杂化,让我忽略所有文件夹下的文件Resources.

这是最常见的解决方案(在所有重复的问题中)

# Ignore everything
*

# Don't ignore directories, so we can recurse into them
!*/

# Don't ignore .gitignore
!.gitignore

# Now exclude our type
!*.foo
Run Code Online (Sandbox Code Playgroud)

此解决方案的问题是它停止跟踪新添加的文件(因为*忽略所有文件).我不想继续排除每种文件类型.我想要正常的行为,如果添加任何新文件,git status显示它.

我终于在这里找到了解决方案.解决方案是.gitignoreResources文件夹中添加另一个文件.这工作正常.

我可以用一个忽略文件实现相同的目标吗?我发现在不同的目录中有很多忽略文件有点笨拙.

这就是我想要实现的目标:

# Ignore everything under Resources folder, not elsewhere
Resources

# Don't ignore directories, so we can recurse into them
!*Resources/

# Now exclude our …
Run Code Online (Sandbox Code Playgroud)

git directory version-control gitignore subdirectory

81
推荐指数
4
解决办法
10万
查看次数

C#的JSON库

Microsoft是否提供任何库以在C#中使用JSON?如果没有,你推荐什么开源库?

c# json

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

相对于键对字典进行排序

我在C#中有一本字典

Dictionary<Person, int>
Run Code Online (Sandbox Code Playgroud)

我想那种字典到位相对于键(在Person类的字段).我该怎么做?互联网上的每个可用帮助都是列表,没有特定的字典排序示例.任何帮助将非常感谢!

c# sorting dictionary

71
推荐指数
6
解决办法
9万
查看次数

如何为我的应用程序为所有用户创建的文件授予完全权限?

我开发的工具需要将访问权限"完全控制"授予由它创建的文件.需要从所有Windows帐户甚至可能的未来帐户中读取,修改和删除它.这可以实现吗?

我知道我可以尝试使用SPECIFIC_USER:

FileSystemAccessRule rule = new FileSystemAccessRule(SPECIFIC_USER, FileSystemRights.FullControl, AccessControlType.Allow);
FileSecurity fSecurity = File.GetAccessControl(filePath);
fSecurity.SetAccessRule(rule);
File.SetAccessControl(filePath, fSecurity);
Run Code Online (Sandbox Code Playgroud)

但是如何将其授予所有用户?甚至可能的未来帐户?如果后一部分不可能,如何进行第一项要求?

谢谢.

编辑:

这是适合我的代码.取自回答者的链接.

private bool GrantAccess(string fullPath)
{
    DirectoryInfo dInfo = new DirectoryInfo(fullPath);
    DirectorySecurity dSecurity = dInfo.GetAccessControl();
    dSecurity.AddAccessRule(new FileSystemAccessRule(
        new SecurityIdentifier(WellKnownSidType.WorldSid, null), 
        FileSystemRights.FullControl,
        InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit,
        PropagationFlags.NoPropagateInherit,
        AccessControlType.Allow));

    dInfo.SetAccessControl(dSecurity);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

注意PropagationFlags.NoPropagateInherit哪个是必需的(在链接的最后面提到).它确实为未来的账户授予特权.

.net c# permissions user-accounts winforms

70
推荐指数
2
解决办法
7万
查看次数

手动创建委托与使用Action/Func委托

今天我在考虑宣布这个:

private delegate double ChangeListAction(string param1, int number);
Run Code Online (Sandbox Code Playgroud)

但为什么不用这个:

private Func<string, int, double> ChangeListAction;
Run Code Online (Sandbox Code Playgroud)

或者如果ChangeListAction没有返回值,我可以使用:

private Action<string,int> ChangeListAction;
Run Code Online (Sandbox Code Playgroud)

那么使用delegate关键字声明委托的优势在哪里?

是因为.NET 1.1,随着.NET 2.0的出现Action<T>和.NET 3.5的出现Func<T>

c# delegates action func

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

MySQL IF ELSEIF在select查询中

我正在尝试根据用户选择的数量选择不同的产品价格.这是我正在处理的查询(它有语法错误):

 select id, 
    (SELECT 
    IF(qty_1<='23',price,1)
    ELSEIF(('23'>qty_1 && qty_2<='23'),price_2,1)
    ELSEIF(('23'>qty_2 && qty_3<='23'),price_3,1)
    ELSEIF('23'>qty_3,price_4,1)
    END IF) as total 
 from product;
Run Code Online (Sandbox Code Playgroud)

mysql if-statement

66
推荐指数
4
解决办法
24万
查看次数

在Visual Studio中进行多项选择?

有没有办法在VS中选择多个非相邻(完全独立)的文本?我可以通过按住Ctrl键单独选择文本,在MS Word中执行此操作,如下所示:

在此输入图像描述

我的版本是11.

编辑:我不是在谈论Alt+Select块选择.另外我想看看Notepad ++中是否存在一种技术.

text-editor selection multi-select visual-studio visual-studio-2012

66
推荐指数
11
解决办法
7万
查看次数

localdb for version 11的连接字符串是什么

我正在尝试实体框架的Code First演练(http://blogs.msdn.com/b/adonet/archive/2011/09/28/ef-4-2-code-first-walkthrough.aspx).

我有最新的SQL Server Express,当我通过命令行(sqllocaldb info)检查我的版本时:我看到localdbApp1和v11.0.当我尝试通过一些小的调整来运行演练时,我得到一个无法连接错误.

我的app.config看起来像这样:

<parameter value="Server=(LocalDB)\v11.0; Integrated Security=True; MultipleActiveResultSets=True" />
Run Code Online (Sandbox Code Playgroud)

我写了一个简单的连接测试,如下所示,代码返回相同的SQL连接错误((提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)).

new System.Data.SqlClient.SqlConnection("Data Source=(LocalDB)\v11.0; Integrated Security=True; MultipleActiveResultSets=True").Open();
Run Code Online (Sandbox Code Playgroud)

我试着更换"Data Source=...""Server=...",但无济于事那里.

任何想法连接字符串应该是什么?

c# sql-server connection-string sql-server-2012 localdb

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