我有一点gesign问题(再次)。假设我有这个 Buttonpad 对象:
替代文字 http://img530.imageshack.us/img530/7513/buttonpad.jpg
现在这个对象是 com 对象中的一个包装对象。目前它有一个名为CreateInto(IComObject)的方法。现在在 Com 对象中创建一个新的按钮板。
你做:
ButtonPad pad = new ButtonPad();
pad.Title = "Hello";
// Set some more properties.
pad.CreateInto(Cominstance);
createinfo 方法将执行正确的命令以在 com 对象中构建按钮板。在它被创建之后,任何对它的调用都会被转发到底层对象进行更改,所以:
pad.Title = "New title";
将调用 com 对象来设置标题并设置内部标题变量。
基本上,在 CreateInfo 方法之前的任何调用都只会影响 .NET 对象,之后的任何东西都会产生调用 com 对象的副作用。我不太擅长序列图,但这是我试图解释发生了什么的尝试:
替代文字 http://img196.imageshack.us/img196/5885/seqa.jpg
这对我来说感觉不好,感觉就像我在向用户撒谎关于按钮板的作用。
我将有一个名为 WrappedButtonPad 的对象,它是从 CreateInto 返回的,用户可以调用它来更改 Com 对象,但我觉得有两个对象几乎做同样的事情但只是名称不同可能是更糟。
这些是有效的设计,还是我担心是对的?
您将如何处理可以创建和查询 com 对象的对象?