小编Evy*_*tar的帖子

struct C#的大小

我是C#的新手.
我试图理解为什么结构大小增长.
即:

struct Test
{
    float x;
    int y;
    char z;
}
Run Code Online (Sandbox Code Playgroud)

Test结构的大小实际上是10个字节(float = 4,int = 4,char = 2).
但是,当我试图用Marshal.SizeOf(..)方法获得sizeof结构时,我得到了12.
在C++中我做pragma pack(1)了防止这个但是我怎么能在C#中做到这一点?

另一个问题:
当我试图将Test结构转换为字节数组时,如果结构不是[Serialize]我得到的字节数组大小为12字节为例外(或不是),但如果结构是[Serialize]我得到大小为170字节的字节数组,为什么会这样?
谢谢!:)

c# struct

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

EWS找不到自动发现服务

我正在使用C#EWS(ExchangeWebServices)。
我有ExchangeServer,即具有以下IP:10.81.5.1。
现在,我正在尝试像下面这样访问ExchangeServer:

 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);

 service.Credentials = new WebCredentials("myuser", "mypassword", "10.81.5.1");
 service.TraceEnabled = true;
 service.TraceFlags = TraceFlags.All;
 service.AutodiscoverUrl("myuser@mydomain.local", RedirectionUrlValidationCallback);//Throw an exception
Run Code Online (Sandbox Code Playgroud)

我有以下异常:

找不到自动发现服务。

我怎么知道我的ExchangeServer域?

当我更改以下内容(并在ExchangeServer计算机内部运行代码)时

service.Credentials = new WebCredentials("myuser", "mypassword");
Run Code Online (Sandbox Code Playgroud)

意味着域是本地主机,我可以毫无例外地成功运行我的代码。

我的代码有什么错误?

如果我没有在ExchangeServer计算机内部运行代码,我需要写什么“ 10.81.5.1”?我怎么知道我的ExchangeServer“域”?

谢谢。

c# exchange-server exchangewebservices

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

删除文件://前缀c#

我有以下内容:

string file = string.Concat(
                 System.IO.Path.GetDirectoryName(
                    System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
                 ), 
              "bla.xml");
Run Code Online (Sandbox Code Playgroud)

现在文件是:

file:\C:\test\Debugbla.xml
Run Code Online (Sandbox Code Playgroud)

如何删除"file:\"前缀?

谢谢

c#

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

Selenium 在 alpine 3.6 容器上运行

我正在尝试在容器Selenium上运行。alpine 3.6(FROM alpine:3.6)

我在容器外壳中尝试的内容:

apk update
apk add python3
pip3 install -U selenium
apk add chromium
apk add chromium-driver
Run Code Online (Sandbox Code Playgroud)

并运行以下 python(使用 python3):

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(chrome_options=options, executable_path=r'usr/bin/chromedriver') # Thrown an exception
Run Code Online (Sandbox Code Playgroud)

并得到以下异常:

selenium.common.exceptions.WebDriverException:消息:未知错误:Chrome无法启动:崩溃(驱动程序信息:chromedriver = 2.27(6ee44a7247c639c0703f291d320bdf05c1531b57),platform = Linux 5.0.0-23-generic x86_64)

selenium=3.141.0
chromium=57.0.2987.133
chromeDriver=2.27
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

python selenium selenium-chromedriver alpine-linux

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

尝试从C#调用C++ DLL时格式不正确异常

我正在使用C#WPF.
我有一个C++测试dll如下:
.h:

extern "C" __delspec(dllexport) void TestMethod();
Run Code Online (Sandbox Code Playgroud)

.cpp文件:

extern "C"
{
    __delspec(dllexport) void TestMethod()
    {
        MessageBox(0, L"Test", L"Test", MB_ICONINFORMATION);
    }
}
Run Code Online (Sandbox Code Playgroud)

C#代码:

[DllImport("DllTest.dll", EntryPoint = "TestMethod")]
public static extern void TestMethod();
Run Code Online (Sandbox Code Playgroud)

当我试图调用TestMethod时,我得到了异常:

an attempt was made to load a program with an incorrect format
Run Code Online (Sandbox Code Playgroud)

我做错了什么?
谢谢!


c# c++ wpf language-interoperability

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

从字符串数组转换为字节数组

我正在使用C#.

我有一个字符串数组如下:"1,2,3,4,5,..." 我正在尝试将字符串数组转换为字节数组,如下所示[]{1,2,3,4,5,...} :最好的方法是什么?

谢谢.

c#

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

调试与发布C#代码

我有以下代码:

 public static void Main(string[] args)
    {
        bool isComplete = false;

        var t = new Thread(() =>
        {
            int i = 0;
            while (!isComplete) i += 0;
        });

        t.Start();

        Thread.Sleep(500);
        isComplete = true;
        t.Join();
        Console.WriteLine("complete!");

    }
Run Code Online (Sandbox Code Playgroud)

程序将挂起在释放模式下,并以调试模式提供输出("完成!").

这是什么原因?

谢谢.

c#

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

映射到方法c ++

我正在使用C++.
我试图制作一个类方法的地图.
即:

map<int,void*> mapIdToMethod;
Run Code Online (Sandbox Code Playgroud)

方法:

void MyClass::MyMethod(void*);
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

mapIdToMethod.insert(make_pair(1, (void*)&MyClass::MyMethod));//Not compiled
 mapIdToMethod.insert(make_pair(1, (void*)&MyClass::MyMethod()));//Not compiled
Run Code Online (Sandbox Code Playgroud)

那么,为什么这样做最好的是什么?
谢谢!

*我无法使用 Boost

c++

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

没有实例C#的调用方法

我正在使用c#.
我有课

class A
{
   public void MyMethod(int x){//Do something...};
}
Run Code Online (Sandbox Code Playgroud)

如何在MyMethod不创建实例的情况下调用Class A
我可以使用委托/动作或其他方式来做到这一点吗?
*无需将MyMethod更改为静态功能

谢谢

c#

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