在Python中,当我想使用这个COM对象时,我所做的只是win32com.client.Dispatch("Myapp.Thing.1")它给了我一个对象,我可以调用方法等等.
我想在C#中做到这一点,令人震惊的是,我似乎无法弄清楚如何.我不希望使用这些自动生成的COM包装之一,其原因我不能进入.我需要做晚期绑定,过去的动态COM.
我试过这样做,但是在调用调用时我得到了Null Ref Exception.
Type t = Type.GetTypeFromProgID("Myapp.Thing.1")
o = Activator.CreateInstance(t)
t.GetMethod("xyz").Invoke(o, args)
Run Code Online (Sandbox Code Playgroud)
任何能够通过其名称加载COM对象并以某种基本方式使用它的示例代码都是理想的.
所以节点对我来说很有用.我有一个非常特定的服务器应用程序,它基本上接受执行特定CPU绑定过程的请求,并执行一个C程序来执行此操作.事实是,如果我有多个客户端,我很可能会得到同一请求的多个版本.通过在特定键上实现具有锁定功能的缓存,以某种方式显式处理它将是一个很好的优化,以便其他客户端只需等待该请求返回,并复制其响应.
但我是节点的新手,所以我不知道如何将其安装到我的基本节点路由器请求处理程序机制中.显然我可以使用基本并发原语在语言x中完成它,但我知道该节点是面向事件的,我认为这可以通过一种非常优雅的方式完成.想法?
我正在编写一个函数,该函数接受一个整数并返回该整数乘以2、5的向量。我认为这看起来像:
fn foo(x: &i64) -> Vec<&i64> {
let mut v = vec![];
for i in 0..5 {
let q = x * 2;
v.push(&q);
}
v
}
fn main() {
let x = 5;
let q = foo(&x);
println!("{:?}", q);
}
Run Code Online (Sandbox Code Playgroud)
借阅检查器很麻烦,因为我定义了一个新变量,它在堆栈上分配,并在函数末尾超出范围。
我该怎么办?当然,如果没有编写可以创建新数据的函数,我将一生难忘!我知道有Box和Copy类型的解决方法,但我对惯用的Rust解决方案感兴趣。
我知道我可以返回a,Vec<i64>但是我认为这会遇到相同的问题吗?主要尝试针对一般问题提出一个“集合式”问题:)