变量绑定类

时间:2010-04-15 03:02:11

标签: c# vb.net

我相信这是一个艰难的...

我正在尝试在类中创建变量绑定的集合。

打算看起来像这样:

Dim x as integer, s as string
Dim c as new VBindClass

x = 1
s = "Hello"

c.Add x, s
Debug.Print c.value(x) '= 1
Debug.Print c.value(s) '= "Hello"

是否有某些功能允许我们检索给定变量的唯一ID并根据变量获取/设置?

更新

最后,我找到了答案。这是代码:

Dim gh As Runtime.InteropServices.GCHandle = Runtime.InteropServices.GCHandle.Alloc(obj)
Return Runtime.InteropServices.GCHandle.ToIntPtr(gh).ToInt64

2 个答案:

答案 0 :(得分:1)

你不能直接绑定到方法变量,因为a:它们没有反射,而b:它们在编译器通过时可能实际上不存在。此外,在实现方面,像VBindClass)这样的东西可以访问当前的堆栈位置(因为两者相隔数英里)会非常混乱。

您可以使用反射(Type.GetFields(...)来反映字段(类/结构上的变量),通常需要非公共实例绑定标志。

对于您的示例,“捕获的变量”可能有用,但您需要使用lambdas /表达式才能工作。但在C#术语中:

int x = 1;
Action a = () => Debug.WriteLine(x);

// can now hand "a" anywhere, including to other classes, into events etc

x = 27;
//now invoke a **from anywhere** - it'll show the current value (27)
a();

答案 1 :(得分:0)

IF 我理解你正在寻找的东西你可能想看一下使用

Dictionary Class