小编Cod*_*key的帖子

使用委托在C#中实现的观察者模式?

有一个问题已经回答是在C#中,是不是已经使用事件实现的观察者模式?

它询问观察者模式是否已在c#中使用事件实现.

虽然我得到了事件和观察者模式,但不是观察者模式真的只是委托和事件是进一步的实现吗?

c# events delegates design-patterns observer-pattern

11
推荐指数
1
解决办法
7552
查看次数

C#构造函数设计

我有一个类,你在一个文件夹中传递,然后它关闭并处理指定文件夹中的大量数据.

例如:

MyClass myClass = new MyClass(@"C:\temp");
Run Code Online (Sandbox Code Playgroud)

现在它开始了,读取说几千个文件并用数据填充该类.

我应该从构造函数中移出这些数据并将其作为单独的方法,如下所示吗?

MyClass myClass = new MyClass();
myClass.LoadFromDirectory(@"C:\temp");
Run Code Online (Sandbox Code Playgroud)

c# constructor

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

调试时如何在某个时刻中断循环?

环境:Visual Studio 2008 - C#

我有一个for在字符串数组上运行1000次以上.

当其中一个字符串与某个术语匹配时,我想让我的应用程序中断,所以我可以在我的代码中完成此操作.

现在我知道我可以添加一段代码来查找它,并在它命中时提供一个断点,但是在调试器中没有办法做到这一点吗?

c# debugging breakpoints visual-studio-2008

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

数据库编程概念

所以我已经阅读了几本关于SQL的书籍,我已经使用了SQL并创建了数据库,但实际上并没有什么高级,几个表,一对几个连接,等等.

所以现在我正在开展一个非常大的项目.数据库将有多个表,我们每天将处理40'000到80'000行数据.

现在我发现自己缺少一些基本的SQL概念,例如:

我有一个包含文件和文件详细信息的数据集.这些文件列在一个表中,文件详细信息列在另一个表中.我们还有一个构建表和第四个表,它们将构建表,文件表和文件详细信息表连接在一起.

问题是,"如何处理文件并将正确的文件详细信息与文件关联并与构建关联?

甚至我的大学也没有报道这一点,现在我觉得我的表现非常深刻.

让我们举一个例子.让我们拿文件表.在我的应用程序中,我有40'000个文件,我需要将尚未存在的文件添加到文件表中.我是否必须搜索每个单独的条目并添加它是否不存在,如果不存在则跳过?

所以我真正的问题是,在哪里阅读一般概念的好地方?

sql

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

Enum过度使用?

我不确定我是否在这里滥用Enums.也许这不是最好的设计方法.

我有一个枚举,它声明了执行批处理文件的方法的可能参数.

public enum BatchFile
{
    batch1,
    batch2
}
Run Code Online (Sandbox Code Playgroud)

然后我有我的方法:

public void ExecuteBatch(BatchFile batchFile)
{
    string batchFileName;
    ...
    switch (batchFile)
        {
            case BatchFile.batch1:
                batchFileName = "Batch1.bat";
                break;
            case BatchFile.batch2:
                batchFileName = "Batch2.bat";
                break;
            default:
                break;
        }
    ...
    ExecuteBatchFile(batchFileName);
}
Run Code Online (Sandbox Code Playgroud)

所以我想知道这是否是合理的设计.

我想的另一个选择是在构造函数中创建一个Dictionary <>,如下所示:

Dictionary<BatchFile, String> batchFileName = new Dictionary<BatchFile, string>();
batchFileName.Add(BatchFile.batch1, "batch1.bat");
batchFileName.Add(BatchFile.batch2, "batch2.bat");
Run Code Online (Sandbox Code Playgroud)

然后我会去,而不是使用switch语句:

public void ExecuteBatch(BatchFile batchFile)
{
    ExecuteBatchFile(batchFileName[batchFile]);
}
Run Code Online (Sandbox Code Playgroud)

我猜测后者是更好的方法.

c# enums dictionary

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

SQL权限添加数据以及如何验证?

我正在寻找一种很好的方法来维护谁可以将数据添加到C#app和SQL Server 2005中的数据库的权限.

我需要解释一下这个问题.那么让我们举个例子:

我有两个用户BobJim,都已添加到SQL权限,使他们具有对数据库的写入权限.现在,所有访问都基于域用户帐户.所有其他用户只有读取权限.

现在我有几个表,例如:

  • 用户
  • UserPermissions
  • 图书
  • BookPublishers

因此UserPermissions包含Users和BookPublishers列表.例如:Bob有权为其添加图书MS PressJim有权为其添加图书O'Reilly.

现在我需要验证这些信息并限制它们可以添加的内容.

所以说Jim从命令行使用我的应用程序,他写了类似的东西:

Addbook.exe "C# 3.0 in a Nutshell" "O'Reilly"

该工具应该继续并将书籍添加到书籍表中.

现在说Bob尝试相同的命令,该工具应该出错,因为他没有权限添加书籍O'Reilly.

现在我需要知道如何做几件事.

  • 验证用户是否首先具有SQL Server的写入权限
  • 验证用户是否具有books由特定发布者添加的写入权限
  • 此外,我需要在工具实际尝试添加数据之前验证上述情况是否属实,即在工具继续之前我需要先验证反馈

现在我并不是100%担心用户注入恶意数据,虽然停止它会很好,但它是一个内部工具,我想我可以信任用户......(可能)

无论哪种方式,我都不知道从哪里开始,我的SQL技能非常缺乏.

Akk,最后一件事,我不想使用存储过程添加数据.

c# sql sql-server-2005 database-permissions

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

将事件添加到类方法?

好的,我已经尝试过,但我只是不明白.

我有两个类loggerclass1.

我有一个名为logger.Write(string)和方法的方法class1.Execute().

现在在我的应用程序中,我希望logger.Write(class1.ToString())class1.Execute()调用时运行.

我认为你需要添加代表和事件,但我无法理解这一点,已经抓了几个小时.

有一件事是,记录器和类在不同的命名空间中,如果可能的话,我不想更新其中任何一个的类代码.

c# methods events delegates

0
推荐指数
1
解决办法
417
查看次数