Tag: 命名空间

Visual Studio 2010突然看不到命名空间?

我的C#WinForms解决scheme有两个项目。 一个DLL是我正在开发的主要项目,一个可执行的WinForms我称之为“Sandbox”,这样我就可以一口气编译/运行/debuggingDLL。 我在两个项目的.NET 4.0工作。 一切工作正常,直到我添加了一些看似无辜的代码,并在DLL中对System.Web的引用。 现在我的沙盒项目无法看到DLL项目的名称空间。 我没有改变任何我认为会影响到的东西。 如果我从Sandbox引用中删除了对DLL的项目引用并重新添加它,那么红色下划线全部消失,并且所有类的颜色编码都会返回; 但是一旦我试图build立解决scheme,整个事情就会再次崩溃。 当我在Sandbox的引用中右键单击DLL项目并在对象浏览器中查看时,我可以看到名称空间和所有内容。 我有一种感觉,这可能是某种错误? 这是一些VS2010的错误? 几个月前我也遇到了同样的问题,我只能通过制作一个全新的项目并重新导入我的文件来解决这个问题。 但这一次,我有一个bajillion文件,只会作为最后的手段! 编辑:惊慌失措地经历和取消我所有的变化,试图找出是什么原因造成的问题,似乎是这样一行: string url = "http://maps.google.com?q=" + HttpUtility.UrlEncode(address); 如果我注释掉这一行,那么我不会收到命名空间错误,项目也可以正常生成。 虽然我看不出这条线有什么问题。

Python – 导入模块中全局variables的可见性

我碰到了一个在Python脚本中导入模块的墙。 我会尽我所能来形容这个错误,为什么我会遇到这个错误,为什么我要用这个特殊的方法来解决我的问题(我将在第二个问题中描述): 假设我有一个模块,在这个模块中定义了一些实用函数/类,这些实用函数/类是指在这个辅助模块将被导入的命名空间中定义的实体(让“a”成为这样一个实体): 模块1: def f(): print a 然后我有主程序,定义了“a”,我要导入这些程序: import module1 a=3 module1.f() 执行该程序将触发以下错误: Traceback (most recent call last): File "Z:\Python\main.py", line 10, in <module> module1.f() File "Z:\Python\module1.py", line 3, in f print a NameError: global name 'a' is not defined 过去也曾有类似的问题 (前两天)提出过几种解决办法,但我并不认为这些问题符合我的要求。 这是我特别的背景: 我试图做一个连接到MySQL数据库服务器的Python程序,并用GUI显示/修改数据。 为了清晰起见,我已经在一个单独的文件中定义了一大堆辅助/实用MySQL相关函数。 然而,它们都有一个公用variables,我最初是在 utilities模块中定义的,它是MySQLdb模块中的游标对象。 我后来意识到,应该在主模块中定义游标对象(用于与数据库服务器通信), 以便主模块和导入其中的任何内容都可以访问该对象。 最终结果是这样的: utilities_module.py: def utility_1(args): code […]

prepend双冒号“::”是什么意思?

我在一个类中find了这行代码,我必须修改它: ::Configuration * tmpCo = m_configurationDB;//pointer to current db 而且我不知道到底是什么意味着类名前缀的双冒号。 没有这个我会读: tmpCo声明作为指向Configuration类的对象的指针…但前缀的双冒号混淆了我。 我还发现: typedef ::config::set ConfigSet;

通过reflection获取名称空间中的所有types

如何通过C#中的reflection来获取名称空间中的所有类?

什么是解决Objective-C命名空间碰撞的最好方法?

Objective-C没有名称空间; 这很像C,一切都在一个全局的命名空间。 通常的做法是用类名前缀加前缀,例如,如果你在IBM工作,你可以用“IBM”作为前缀。 如果你在微软工作,你可以使用“MS”; 等等。 有时候,首字母缩写是指项目,例如Adium在“AI”前加上类(因为没有任何公司可以采用这个缩写)。 苹果公司前缀与NS的类,并说这个前缀是只保留给苹果。 到目前为止这么好。 但是将2到4个字母附加到前面的类名是一个非常非常有限的名称空间。 例如,MS或AI可能具有完全不同的含义(例如,AI可能是人工智能),而其他开发人员可能会决定使用它们并创build一个同名的类。 砰 ,命名空间相撞。 好吧,如果这是你自己的类和你正在使用的外部框架之间的碰撞,你可以很容易地改变你的类的命名,没有什么大不了的。 但是,如果使用两个外部框架,那么这两个框架都没有源代码,而且不能更改? 您的应用程序与他们两个链接,你会得到名称冲突。 你将如何去解决这些问题? 什么是最好的方式来解决他们的方式,你仍然可以使用这两个类? 在C中,可以通过不直接链接到库来解决这些问题,而是使用dlopen()在运行时加载库,然后使用dlsym()查找要查找的符号并将其分配给全局符号可以用你喜欢的任何方式命名),然后通过这个全局符号来访问它。 例如,如果因为某个C库有一个名为open()的函数而发生冲突,则可以定义一个名为myOpen的variables,并指向该库的open()函数,因此,如果要使用系统open() ,你只需要使用open(),当你想使用另一个时,你可以通过myOpen标识符来访问它。 在Objective-C中有类似的可能性,如果不是的话,还有没有其他聪明的,棘手的解决scheme,你可以使用解决命名空间冲突? 有任何想法吗? 更新: 为了澄清这个问题:如何避免命名空间冲突或如何创build一个更好的命名空间的答案当然是受欢迎的; 然而,我不会接受他们作为答案,因为他们不能解决我的问题。 我有两个图书馆,他们的class名相撞。 我不能改变他们; 我没有任何一个的来源。 碰撞已经在那里,如何提前避免的提示将无济于事。 我可以将它们转发给这些框架的开发人员,并希望他们将来能够select一个更好的名称空间,但是目前我正在寻找一种解决scheme,在单个应用程序中使用框架。 任何解决scheme,使这成为可能?

具有默认名称空间设置为xmlns的XML源的XSLT

我有一个默认命名空间的根文件的XML文档。 像这样的东西: <MyRoot xmlns="http://www.mysite.com"> <MyChild1> <MyData>1234</MyData> </MyChild1> </MyRoot> parsingXML的XSLT由于默认的名称空间而无法按预期的方式工作,即当我删除名称空间时,一切都按预期工作。 这是我的XSLT: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xsl:template match="/" > <soap:Envelope xsl:version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <NewRoot xmlns="http://wherever.com"> <NewChild> <ChildID>ABCD</ChildID> <ChildData> <xsl:value-of select="/MyRoot/MyChild1/MyData"/> </ChildData> </NewChild> </NewRoot> </soap:Body> </soap:Envelope> </xsl:template> </xsl:stylesheet> XSLT文档需要做些什么才能使翻译正常工作? XSLT文档究竟需要做什么?

在C#中使用带默认命名空间的Xpath

我有一个默认名称空间的XML文档。 我正在使用XPathNavigator来使用Xpathselect一组节点,如下所示: XmlElement myXML = …; XPathNavigator navigator = myXML.CreateNavigator(); XPathNodeIterator result = navigator.Select("/outerelement/innerelement"); 我没有得到任何结果:我假设这是因为我没有指定命名空间。 我如何在我的select中包含命名空间?

未命名/匿名命名空间与静态函数

C ++的一个小function就是能够创build匿名(匿名)的命名空间,如下所示: namespace { int cannotAccessOutsideThisFile() { … } } // namespace 你会认为这样的function是无用的 – 因为你不能指定名字空间的名字,所以不可能从外部访问它的任何东西。 但是这些无名的命名空间可以在它们创build的文件中访问,就好像你有一个隐式的using子句。 我的问题是,为什么或什么时候这会比使用静态函数更可取? 或者他们基本上是两种做同样的事情?

使用std命名空间

对std命名空间使用'using'似乎有不同的看法。 有人说使用“ using namespace std ”,其他人说,不要,而是前缀std函数与' std:: '使用,而其他人说使用这样的东西: using std::string; using std::cout; using std::cin; using std::endl; using std::vector; 用于所有要使用的std函数。 各有什么优点和缺点? |

有人可以在Python中解释__all__吗?

我一直在使用Python越来越多,我一直在看__init__.py文件中设置的variables__all__ 。 有人可以解释这是什么吗?