小编Vid*_*dar的帖子

使用并排清单部署时,在.net代码中引发的事件似乎不会出现在COM代码中

这是一个非常简单的.net < - >使用事件的COM互操作示例.

只要我在.net库的Visual Studio构建选项中使用regasm或com for interopop选项的注册表,这个例子就可以正常工作.但我需要使用免费注册互操作并行清单进行部署.

应用程序在并排模式下运行良好,只是事件似乎消失了.我怀疑它是一些线程编组问题,但我似乎无法找到正确的解决方案.

这当然是尝试通过稍微复杂的互操作集成来复制我遇到的问题.与现实问题相比,我在这里遇到的问题有一个区别:

这两种解决方案都无法在免注册部署的情况下正确接收.net代码中引发的事件,并且当.net dll在注册表中注册时,这两种解决方案都按预期工作.但是:在"真实"项目中,当从System.Reflection.Target失败时,我收到运行时错误.在这个简化的例子中,它只是默默地失败.

我完全坚持这个,所以任何和所有的建议和解决方案将非常受欢迎.

我已经把完整的代码放在github上如果有人需要在回答之前玩它:https://github.com/Vidarls/InteropEventTest

.net部分

using System.Runtime.InteropServices;
using System.Threading.Tasks;

namespace InteropEventTest
{
    [Guid("E1BC643E-0CCF-4A91-8499-71BC48CAC01D")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [ComVisible(true)]
    public interface ITheEvents
    {
        void OnHappened(string theMessage);
    }

    [Guid("77F1EEBA-A952-4995-9384-7228F6182C32")]
    [ComVisible(true)]
    public interface IInteropConnection
    {
        void DoEvent(string theMessage);
    }

    [Guid("2EE25BBD-1849-4CA8-8369-D65BF47886A5")]
    [ClassInterface(ClassInterfaceType.None)]
    [ComSourceInterfaces(typeof(ITheEvents))]
    [ComVisible(true)]
    public class InteropConnection : IInteropConnection
    {
        [ComVisible(false)]
        public delegate void Happened(string theMessage);
        public event Happened OnHappened;


        public void DoEvent(string theMessage)
        {

            if (OnHappened != null)
            { …
Run Code Online (Sandbox Code Playgroud)

c# vb6 com-interop

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

如何使用Aurelia将换行符渲染为<br>标记

我正在使用JSON检索一些文本数据,这些数据包括使用换行符格式化的文本.我非常想将这些换行符渲染给用户.

问题:实现这一目标的"正确"/"推荐"方法是什么?

我试过的选项:

  • 通常绑定<p>${myText}</p>::不呈现换行符
  • 使用<pre>:: <p><pre>${myText}></pre></p>渲染换行符,但包含长<pre>文本的所有已知和喜爱的问题,例如某些浏览器中的水平滚动和次优字断.
  • 通常使用valueConverter进行绑定,该值使用<br>标记替换换行符:<p>${myText | textFormat}</p>
export class TextFormatValueConverter {
  toView(value) {
    return value.replace(new RegExp('\r?\n','g'), '<br>');
  }
}
Run Code Online (Sandbox Code Playgroud)

这会渲染<br>标签,但Aurelia活页夹会转义标签并将其显示为用户的文字文本.*使用上面的转换器绑定和innerHTML :: <p innerHTML.bind="myText | textFormat"></p>渲染确定但是我担心它可能容易受到攻击,因为文本来自遗留系统,它不对网络的使用做任何输入清理.

html javascript aurelia aurelia-binding

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

标签 统计

aurelia ×1

aurelia-binding ×1

c# ×1

com-interop ×1

html ×1

javascript ×1

vb6 ×1