小编Ric*_*ohr的帖子

如何将对象转换为对象[]

我有一个object值可能是像int[]或的几种数组类型之一string[],我想将它转换为string[].我的第一次尝试失败了

void Do(object value)
{
    if (value.GetType().IsArray)
    {
        object[] array = (object[])value;
        string[] strings = Array.ConvertAll(array, item => item.ToString());
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

运行时错误Unable to cast object of type 'System.Int32[]' to type 'System.Object[]',回想起来很有意义,因为我int[]不包含盒装整数.

我四处寻找这个工作版本:

void Do(object value)
{
    if (value.GetType().IsArray)
    {
        object[] array = ((Array)value).Cast<object>().ToArray();
        string[] strings = Array.ConvertAll(array, item => item.ToString());
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我想这没关系,但看起来很复杂.谁有更简单的方法?

c#

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

从非托管C++到C#的回调可以正常工作,但仅限于调试器

从非托管C++回调C#很棘手.我从这篇MSDN文章 和这个stackoverflow技巧中了解了大部分所需的 内容, 结果在调试器中运行良好.但是在调试器之外它失败了"对象引用没有设置为对象的实例".

这是(简化的)C#代码:

class CSharpCode
{
    delegate void CallbackDelegate();

    void DoCSharp()
    {
        CallbackDelegate callbackDelegate = TheCallback;
        IntPtr callbackDelegatePointer = Marshal.GetFunctionPointerForDelegate(callbackDelegate);
        GCHandle gchCallbackDelegate = GCHandle.Alloc(callbackDelegatePointer);

        GC.Collect(); // create max space for unmanaged allocations
        CppCliCode.DoCppCli(callbackDelegatePointer);
    }

    public static void TheCallback()
    {
        MessageBox.Show("It worked");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是C++代码:

#pragma managed

public ref class CppCliCode
{
    static void DoCppCli(IntPtr^ callbackDelegatePointer)
    {
        callback theCallback = static_cast<callback>(callbackDelegatePointer->ToPointer());
        DoCpp(theCallback);
    }
}

#pragma unmanaged

typedef void (__stdcall *callback)();

void DoCpp(callback theCallback)
{
    theCallback(); …
Run Code Online (Sandbox Code Playgroud)

c# c++-cli

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

无法在IntelliJ IDEA中添加插件运行/调试配置

我想修改现有的IntelliJ IDEA插件,作为构建我自己的插件的一步.我选择了Front End Alignment,在IntelliJ IDEA中打开它,添加了IntelliJ Community Edition SDK,并成功构建了项目.但是当我尝试添加插件运行/调试配置(以验证我可以调试插件)时,"使用模块的类路径"下拉列表仅包含"[无]",我得到:

Run Configuration Error: No plugin module specified for configuration
Run Code Online (Sandbox Code Playgroud)

项目结构>项目设置>模块显示这front-end-alignment是一个已知模块.

如何在调试器中运行此示例插件?

intellij-idea intellij-plugin

6
推荐指数
0
解决办法
1925
查看次数

标签 统计

c# ×2

c++-cli ×1

intellij-idea ×1

intellij-plugin ×1