日期:2014-05-19  浏览次数:20758 次

送分了,com新手的小小疑惑,在线等
[ProgId(yyy.GUID)]
    [Guid( "69BB9CE7-2F6D-4a95-9A4B-1DC701EE8094 ")]
    [ComVisible(true)]
    public   class   MarkerS
    {
        [ComRegisterFunction()]
        [ComVisible(false)]
        static   void   RegisterFunction(Type   registerType)
        {
            string   regKey   =   string.Format( "HKEY_CLASSES_ROOT\\CLSID\\{{{0}}} ",  

registerType.GUID);
            Marker.Register(regKey);
        }
    }

以上代码,我的问题

1:ProgId与guid是什么关系?是通过ProgId得到guid再通过guid获得对象?

2:registerType是否就是MarkerS类?registerType.GUID就是MarkerS类的GUID成员?

3:[ComVisible]到底是什么意思?连public都不公开?

谢谢!

------解决方案--------------------
看不懂.我是菜鸟
------解决方案--------------------
1.progid和guid的关系就像域名和IP的关系.progid更便于记忆
实际使用时是先在注册表中先查到progid/guid,再查到指定的com dll.
然后再来构造com对象.
2.本人在.net中极少用到com,不清楚.
3.public是指对CLR引用时公开,仅局限于在.net中.
而加上comvisible后就可以对所有使用了你这个对象的代码公开.
嗯...
就算在vb6/vbs/js/c++/asm里也可以调用它哦~

本人对com也不是很熟...可能理解有错的地方.待各位牛人指正~
------解决方案--------------------
看不懂.我是菜鸟