标签: base-class-library

使用没有幻数的IComparable.Compare

我真的很讨厌和IComparer一起工作- 直到今天,经过多年与.Net的合作,我仍然经常被那些1和-1混淆.

我可以用一些不言而喻的名称替换比较结果值,而不必在每次比较调用后将输出整数转换为其他值吗?

我试着像这样定义一个枚举:

public enum ComparerResult
{
    ALessThanB = -1,
    Equal = 0,
    AGreaterThanB = 1
}

if(comparer.Compare(a, b) == ComparerResult.ALessThanB)
Run Code Online (Sandbox Code Playgroud)

但是,如果没有演员阵容,那当然不会编译.

这当然也适用于IComparable.CompareTo.

谢谢你的想法

.net c# coding-style code-readability base-class-library

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

MemoryStream的byte []缓冲区可以变化吗?

我正在将一个对象序列化为一个byte[]使用MemoryStream:

byte[] serialized = new byte[1000];
using (MemoryStream stream = new MemoryStream(serialized))
    using (TextWriter textWriter = new StreamWriter(stream))
        serializer.Serialize(textWriter, stuffToSerialize);
Run Code Online (Sandbox Code Playgroud)

有什么方法可以'serialized'根据大小来设定增长stuffToSerialize

c# serialization memorystream base-class-library

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

.NET框架中的字母是否有枚举类型?

我需要枚举类型来定义在项目中使用的字母..NET框架中是否有这样的枚举类型?

.net c# linq enums base-class-library

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

C#Dictionary <T,K>单作者多读取器的线程安全

只要未修改集合,Dictionary就可以同时支持多个读取器.即便如此,通过集合枚举本质上不是一个线程安全的过程.在枚举与写访问争用的极少数情况下,必须在整个枚举期间锁定该集合.要允许多个线程访问集合以进行读写,您必须实现自己的同步.

这就是MSDN所说的.

如果没有必要,我不想使用ConcurrentDictionary

我假设,如果只有一个线程执行写入操作Dictionary<T,K>,则其他线程可以安全地同时执行简单的读取操作(如TryGetValue不枚举)而不获取锁定,我是否正确?

.net c# dictionary base-class-library

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

Directory.GetFiles使用SearchPattern返回意外结果

我正在处理一个批处理程序,该程序处理大量文件(超过5万个文件),并且该Directory.GetFiles方法面临着怪异的行为。

在此过程中,我将移动与以下搜索模式“ * .pdf”匹配的文件,并由于以下Directory.GetFiles方法而获得了这些文件:看到有时我移动了.pdfa文件,我感到非常惊讶。

因此,我检查了该文档,并明确指出,如果搜索模式包含带有3个字母的扩展名,则将返回以该扩展名开头的所有文件。

我已经用一个简单的程序进行了测试,它的行为不像文档中所述,仅在极少数情况下才如此。

使用此代码:

static void Main(string[] args) {
    var directory = @"E:\Test\";
    var files = Directory.GetFiles(directory, "*.pdf");
    foreach(var file in files)
        Console.WriteLine(file);
}
Run Code Online (Sandbox Code Playgroud)

我有这个结果:

在此处输入图片说明

您对此行为有任何解释吗?

.net c# system.io.directory base-class-library

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

通用类的基类?

我们在MVC 4应用程序中使用EF6,因此我们为Business Objects创建了一个抽象类
所以,我们有一个通用的抽象类如下:

public abstract class Repository<TEntity, TIdentifier> : IRepository<TEntity, TIdentifier> where TEntity : class { ... }
Run Code Online (Sandbox Code Playgroud)

在我们的应用程序中,BusinessLayer我们有几个类(每个实体一个类)实现上面的类.
例如:如下

    //Authorization is an entity here
    public class AuthorizationBusinessObject : MD.EntityFramework.Repository.Repository<Authorization, int>
    {
       ...
    }
Run Code Online (Sandbox Code Playgroud)

我们需要BaseBusinessObject上面的课程.
现在,我的问题在这里; 我们如何为BaseBusinessObject上课提供课程?

编辑:

嗯,Repository<>是基类BusinessObjects,不是吗?
实际上,我们需要一个非通用的基类来BusinessObjects
为什么?
我们在MVC 4应用程序中使用Web API服务.在每个web api控制器中,我们必须具有与以下相同的操作,只是BusinessObject不同.因此,如果我们可以拥有基本业务对象,我们可以在基本web api控制器中实现以下操作.

// Setting is an Entity
private readonly SettingBusinessObject _settingBusinessObject;

public SettingController()
{
    _settingBusinessObject = new SettingBusinessObject(Entities);
}

public Setting Get(int …
Run Code Online (Sandbox Code Playgroud)

c# generics base-class-library

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