我真的很讨厌和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.
谢谢你的想法
我正在将一个对象序列化为一个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?
我需要枚举类型来定义在项目中使用的字母..NET框架中是否有这样的枚举类型?
只要未修改集合,Dictionary就可以同时支持多个读取器.即便如此,通过集合枚举本质上不是一个线程安全的过程.在枚举与写访问争用的极少数情况下,必须在整个枚举期间锁定该集合.要允许多个线程访问集合以进行读写,您必须实现自己的同步.
这就是MSDN所说的.
如果没有必要,我不想使用ConcurrentDictionary
我假设,如果只有一个线程执行写入操作Dictionary<T,K>,则其他线程可以安全地同时执行简单的读取操作(如TryGetValue不枚举)而不获取锁定,我是否正确?
我正在处理一个批处理程序,该程序处理大量文件(超过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)
我有这个结果:
您对此行为有任何解释吗?
我们在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)