小编Eug*_*sev的帖子

获取sizeof的标准方法(提升(x))

当作为可变参数传递时,是否有一种标准的方法来获得变量的类型大小?

auto x = ...;
auto y = sizeof(promoted(x));
Run Code Online (Sandbox Code Playgroud)

结果应该是:

char  -> sizeof(int)
int   -> sizeof(int)
float -> sizeof(double)
...
Run Code Online (Sandbox Code Playgroud)

c++ sizeof type-promotion

15
推荐指数
3
解决办法
788
查看次数

ExecuteReader(CommandBehavior.CloseConnection)会一直关闭连接吗?

编写这样的辅助方法是否安全?它会不会关闭连接?我想知道如果一切顺利,它会,但是即使它抛出,ExecuteReader也会关闭连接吗?

    public static IEnumerable<DbDataRecord> ExecuteSelect(string commandText, DbConnection conn)
    {
        using (DbCommand cmd = conn.CreateCommand())
        {
            cmd.CommandText = commandText;
            conn.Open();
            using (DbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                foreach (DbDataRecord record in reader) { yield return record; }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

.net c# database-connection

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

在扩展类本身内部使用扩展方法

假设我有一个界面,如下所示:

public interface ILoggable
{
    void Log(Func<string> message, Logger.Type type);
}
Run Code Online (Sandbox Code Playgroud)

还有一些扩展方法,如下所示:

public static class Logger
{
    public static void Log(this ILoggable loggable, Func<string> message) { loggable.Log(message, Type.Information); }
    public static void Log(this ILoggable loggable, string prefix, byte[] data, int len) { /* snip */ }
    public static void Log(this ILoggable loggable, Exception ex) { /* snip */ }
    // And so on...
}
Run Code Online (Sandbox Code Playgroud)

然后在任何class CoreService : ServiceBase, ILoggable或者这样的我实现它public void Log(Func<string> message, Logger.Type type)到我喜欢的任何东西(公共修饰符是meh ......)并使用所有扩展方法来进行实际记录.

到目前为止这么好......还是不太好?这种方法有问题吗?如果没有,那么为什么不方便: …

c# logging extension-methods

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

REP INSB 可以中断吗?

REP INSB假设我在普通优先级线程中从用户模式长时间读取 PCI 设备寄存器。在执行期间,以下哪些情况可以发生,哪些情况不能发生:

  1. 中断(其他内核)
  2. 中断(同一核心)
  3. PCI 访问(其他内核)
  4. PCI 访问(相同核心 - 中断和/或不同线程)
  5. 同一核心上的上下文切换

如果答案取决于它,则假设有一个相当现代的处理器。感兴趣的是 Atom 和 Core i3。

x86 assembly interrupt ioports

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

MsBuild-根据时间修改/名称从目录中删除文件

我有一个目录中每个构建生成的文件列表 C:\BuildArtifacts

目录的内容如下所示:

TestBuild-1.0.0.1.zip
TestBuild-1.0.0.2.zip
TestBuild-1.0.0.3.zip
TestBuild-1.0.0.4.zip
TestBuild-1.0.0.5.zip
TestBuild-1.0.0.6.zip
Run Code Online (Sandbox Code Playgroud)

现在,对于每个增量构建,我只想保留两个最近的工件并删除其余的工件.所以,在这个例子中,我想保留TestBuild-1.0.0.5.zipTestBuild-1.0.0.6.zip

我怎么能用MSBuild做到这一点?

注意:

我设法在一个项目中获取上面的列表

 <Exec WorkingDirectory="$(Artifacts)\.." Command="dir /B /A:-D /O:-N" Outputs="ArchiveFileList" />
Run Code Online (Sandbox Code Playgroud)

msbuild cmd build msbuild-4.0

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