小编Yoh*_*all的帖子

Marshal.SizeOf在枚举上抛出ArgumentException

考虑以下代码:

public enum MyEnum { V1, V2, V3 }

int size = Marshal.SizeOf(typeof(MyEnum));
Run Code Online (Sandbox Code Playgroud)

它抛出异常:

TestConsole.exe中发生了未处理的"System.ArgumentException"类型异常

附加信息:类型'TestConsole.Program + MyEnum'不能作为非托管结构封送; 不能计算有意义的大小或偏移量.

虽然此代码不会抛出异常并size包含4:

public enum MyEnum { V1, V2, V3 }

public struct MyStruct
{
    public MyEnum en;
}

int size = Marshal.SizeOf(typeof(MyStruct));
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么.NET框架无法弄清楚enum第一个示例代码中是4个字节?

UPDATE

Marshal.Sizeof() 在这个通用方法中我失败了:

public bool IoControlReadExact<T>(uint ioControlCode, out T output) where T : struct
{
    output = new T();

    int outBufferSize = Marshal.SizeOf(typeof(T));
    IntPtr outBuffer = Marshal.AllocHGlobal(outBufferSize);
    if (outBuffer == IntPtr.Zero)
        return false;
    try
    { …
Run Code Online (Sandbox Code Playgroud)

.net c# enums marshalling

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

为什么LinkedIn API的'picture-urls ::( original)'字段不再返回值?

我一直在用该picture-urls::(original)领域进口照片多年,但自2018/2/26以来,约有一半的配置文件没有返回这个领域,自2018/3/1以来,没有一个人回来过它.picture-url由于照片太小,该字段不是可用的替代品.

该字段仍记录为基本配置文件的一部分.其他几个人也有这个问题:

  1. 链接在Omniauth photo_urls或picture-urls ::(原始)未被退回

  2. LinkedIn没有拿起og:来自wordpress的图片

linkedin linkedin-api

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

如果程序意外关闭,IDisposable对象是否会被丢弃?

如果程序意外退出(异常或进程终止)会发生什么?是否存在此类(或其他)程序将终止的情况,但IDisposable对象将无法妥善处理?

我问的原因是因为我正在编写与外围设备通信的代码,我想确保它不会被置于糟糕的状态.

.net c# garbage-collection dispose terminate

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

如何递归查找子项的所有ID?

我想从只有MySQL的树中获取孩子们的所有ID.

我有这样一张桌子:

ID parent_id name
1  0         cat1
2  1         subcat1
3  2         sub-subcat1
4  2         sub-subcat2
5  0         cat2
Run Code Online (Sandbox Code Playgroud)

现在我试图以递归方式获取cat1(2,3,4)的所有子ID.有什么办法可以实现吗?

mysql sql database recursion nested

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

使用SqlCommand.ExecuteScalar()从序列中选择高磁盘使用时返回NULL

我有时会在生产环境中遇到这种SqlCommand.ExecuteScalar()情况NULL.

我在这里遇到了很多类似的问题,最接近的是:SqlCommand.ExecuteScalar返回null但原始SQL没有.但给出的建议与我的情况无关.

代码示例如下:

using (var connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (var command = connection.CreateCommand())
    {
        command.CommandText = "SELECT NEXT VALUE FOR Seq_Revision";
        command.CommandType = CommandType.Text;

        return (long)command.ExecuteScalar(); //<---ExecuteScalar() here returns NULL sometimes
    }
}
Run Code Online (Sandbox Code Playgroud)

Seq_Revision 这里是简单的MSSQL序列,如下所示:

CREATE SEQUENCE [dbo].[Seq_Revision] 
 AS [bigint]
 START WITH 0
 INCREMENT BY 1
 MINVALUE -9223372036854775808
 MAXVALUE 9223372036854775807
 CACHE  10 
GO
Run Code Online (Sandbox Code Playgroud)

而且我很确定它永远不会实际返回NULL.


我也观察到类似的怪(不可重复的行为)时,NULL该代码示例中返回,而我敢肯定有有这个ID的实体:

NHibernate.ISession.Get<FooEntity>(entityId)
Run Code Online (Sandbox Code Playgroud)

有趣的是,NULL通过此方法返回与SQL节点上磁盘活动较多(磁盘队列长度> ~50)时的时间帧相关联.

可能很重要:我们使用具有2个节点的AlwaysON群集,其中一个节点用于读取模式(ApplicationIntent=READONLY在连接字符串中).

MSSQL版本是:

Microsoft …
Run Code Online (Sandbox Code Playgroud)

c# sql-server ado.net alwayson sql-server-2014

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

是否可以在Firebird中重命名表?

是否可以在Firebird中重命名表,或者我应该创建一个新表,然后使用insert移动数据?

sql firebird

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

旋转M*N矩阵(90度)

我该如何旋转矩阵

|3 4 5 6 8|
|5 4 3 2 6|
|3 3 7 8 9|
Run Code Online (Sandbox Code Playgroud)

|8 6 9|            
|6 2 8|
|5 3 7|
|4 4 3|
|3 5 3|
Run Code Online (Sandbox Code Playgroud)

因为我见过的所有算法都是N*N矩阵.

c# algorithm rotation matrix

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

TypeError:app.use()需要中间件函数

这是我的server.js文件和api.js文件.我在sort函数中遇到错误,我打算根据它们的属性搜索js对象.事件Schema具有名称,位置,价格,评级等属性.我试着根据它们的价格对它进行排序.

server.js

var express= require('express');
var bodyParser= require('body-parser');
var morgan = require('morgan');
var config=require('./config');
var app= express();
var mongoose=require('mongoose');
//var User=require('./database/user')
mongoose.connect('mongodb://localhost:27017/db',function(err){
    if(err){
        console.log(err);
    }
    else{
        console.log("connected!");
    }
});

app.use(bodyParser.urlencoded({extended: true })); //if false then parse only strings
app.use(bodyParser.json());
app.use(morgan('dev'));//log all the requests to the console
var api=require('./app/routes/api')(app,express);
app.use('/api',api);
app.get('*',function(req,res){
    res.sendFile(__dirname + '/public/views/index.html');
});   // * means any route

app.listen(config.port,function(err){
    if(err){enter code here
        console.log(err);
    }
    else{
        console.log("The server is running");
    }
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)

api.js

var User = require('../models/user'); …
Run Code Online (Sandbox Code Playgroud)

javascript node.js

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

如何从其Click事件WPF停止执行按钮命令

是否有任何方法可以根据某些关于click事件的条件来停止Button命令的执行?

实际上,我想在我们的应用程序中单击某些按钮时弹出确认窗口。为了使其成为一个通用的解决方案,我做了以下工作:

  1. 我有WPF按钮类调用的扩展,AppBarButton它已经包含一些依赖项属性。
  2. 我还有2个其他属性,如下所示:IsActionConfirmationRequiredConfirmationActionCommand

如果IsActionConfirmationRequired然后在左键单击事件中,我将打开确认弹出窗口。

有什么方法可以避免创建new ConfirmationActionCommand和使用相同的Command属性Button吗?如果设置了Command,我将遇到的问题是,Button即使用户未确认仍然执行动作静止按钮命令,也要单击。

C#:

public class AppBarButton : Button
{
    public AppBarButton()
    {
        this.Click += AppBarButton_Click;
    }

    private void AppBarButton_Click(object sender, RoutedEventArgs e)
    {
        Button button = sender as Button;
        if (button == null || IsActionConfirmationRequired == false || ConfirmationActionCommand == null)
            return;

        const string defaultMessage = "Do you really want to {0}";

        string confirmationPopUpMessage = string.IsNullOrEmpty(ActionConfirmationMessage)
          ? DebugFormat.Format(defaultMessage, …
Run Code Online (Sandbox Code Playgroud)

c# wpf command popup button

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

将PowerShell参数传递给Process.Start

我试图将我的一些bat脚本转换为C#.除了PowerShell执行行之外,我已移植整个程序.

为了简单起见,我试图从cmd调用PowerShell命令.我能够这样做,但它没有采用与PowerShell命令一起的复杂参数和参数.

如果我直接从cmd或bat文件运行,这是命令.

powershell -Command "& {asnp 'citrix*'; remove-BrokerTag -Name 'Somename' -Machine 'domain\server' -AdminAddress 'SomeServer';}"
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码调用cmd并运行我的powershell命令.

string strCmdText;
strCmdText = "'/C powershell " + "-Command " + "&" + " { asnp 'citrix*'; add - BrokerTag - Name 'Somename' - Machine 'domain\server'" + (listboxvariable) + " - AdminAddress 'ServerXX'; }'" + " & pause";
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
Run Code Online (Sandbox Code Playgroud)

我收到此错误 "由于缺少参数,无法处理命令.命令必须遵循-Command."

正如您所看到的,这个PowerShell命令中有很多参数.

有更简单的方法吗?或者我只是遗漏了一些简单的东西?

c# powershell command-line-arguments

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