命名空间和类同名吗?

2023-11-30

我正在组织一个图书馆项目,并且有一个名为的中央管理器类Scenegraph以及位于 Scenegraph 命名空间中的一大堆其他类。

我真正想要的是场景图MyLib.Scenegraph和其他类别MyLib.Scenegraph.*,但似乎唯一的方法是让所有其他类的内部类Scenegraph在 Scenegraph.cs 文件中,这太笨拙了。

相反,我将其组织为Mylib.Scenegraph.Scenegraph and MyLib.Scenegraph.*,这确实有效,但我发现 Visual Studio 在某些情况下会混淆我是指类还是命名空间。

有没有一种好方法来组织这个包,以便用户方便,而不会将我的所有代码弄得乱七八糟?


我不建议您像命名空间那样命名类,请参阅本文.

框架设计指南第 3.4 节中说“不要使用 命名空间和该命名空间中的类型具有相同的名称”。那是:

namespace MyContainers.List 
{ 
    public class List { … } 
}

为什么会有这样的坏处呢?哦,让我数一下方法。

你可以让自己陷入你认为你正在指涉的情况 指的是一件事,但实际上指的是另一件事。假设你 最终陷入这种不幸的情况:您正在编写 Blah.DLL 并且 导入 Foo.DLL 和 Bar.DLL,不幸的是,它们都有一个类型 称为 Foo:

// Foo.DLL: 
namespace Foo { public class Foo { } }

// Bar.DLL: 
namespace Bar { public class Foo { } }

// Blah.DLL: 
namespace Blah  
{   
using Foo;   
using Bar;   
class C { Foo foo; } 
}

编译器给出一个错误。“Foo”在 Foo.Foo 和 酒吧.Foo.真糟糕。我想我会通过完全限定名称来解决这个问题:

   class C { Foo.Foo foo; } 

现在这给出了歧义错误“富在 Foo.Foo 在 Foo.Foo 和 Bar.Foo 之间不明确”。我们仍然不知道 第一个 Foo 指的是什么,在我们弄清楚之前,我们 甚至不必费心去尝试弄清楚第二个指的是什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

命名空间和类同名吗? 的相关文章

  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 编译器错误:未定义用户定义类型

    我在这一行收到编译时错误 用户定义的类型未定义 Dim cn As ADODB Connection 可能出什么问题了 Code Sub test Dim cn As ADODB Connection Not the best way to
  • 如何在Java中正确处理定时器?

    我希望我的计时器只执行一次 actionPerformed 方法一次 每次 5 秒 但它在控制台中写入 Hello 很多次 import java awt event ActionEvent import java awt event Ac
  • MySQL选择匹配字符串的最大长度

    我需要返回共享搜索字符串共有的最大长度左界子字符串的所有文本结果 如果有 假设在包含以下内容的表列中搜索 StackOverflow Stack Sta StackOv StackOverthrow StackOverSlow StackF
  • SiriKit 对一般服务的支持

    我在 wwdc 上看过 SiriKit 并阅读了文档 https developer apple com library prerelease content documentation Intents Conceptual SiriInt
  • 如何冻结表格的标题和左列

    我想修复表格的标题和左侧 3 列 但我只找到了一种合适的解决方案 这是链接 http hazaa com au blog how to create an html table with frozen headers and columns
  • 是否可以使用 linq 运行查询来搜索一段时间?

    问题详情 SQL Server 2005 实体框架 4 0 我正在尝试使用 linq 仅运行一段时间的查询 示例 我有以下内容datetime我的服务器中的数据 30 03 2012 12 53 22 30 03 2012 17 23 29
  • 我可以使用表单仅发布 json 字符串(不带“name=”)吗?

    我正在尝试将 json 数据发布到我无法控制的 URL API文档说只接受json数据 我在想是否可以使用html表单来简化它 这里有很多关于如何 使用表单发布 json 数据 的帖子 但没有一个适用于我的情况 问题是 据我所知 如果你使用
  • 控制器中的 MVC Core SelectList 下拉菜单错误“Microsoft.AspNetCore.Mvc.Rendering.SelectListItem”

    我想在 MVC 中创建一个 SelectList Dropdown 我更喜欢选择列表位于存储库中 而不是控制器中 如何调用存储库 甚至不引用模型中的字段名称 我唯一想参考的是存储库 我收到此 Microsoft AspNetCore Mvc
  • 表中每行的边框半径

    我有这样的表格 我想将样式应用到带有圆角的每一行 table tr td Month td td Savings td tr tr td January td td 100 td tr tr td February td td 80 td
  • 使用 PowerShell 将 Windows 用户添加到本地 SQL Server

    我想使用 PowerShell 将现有本地用户作为系统管理员添加到 SQL Server 经过一些研究 到目前为止我有以下脚本 Username JohnDoe System Reflection Assembly LoadWithPart
  • 如何重新定位 Chrome 开发者工具

    默认情况下 这些工具在 Chrome 窗口的底部打开 对于宽屏显示器来说 这是一个相当糟糕的选择 因为右侧有大量的空白空间 但没有太多的垂直空间可供使用 不幸的是 我找不到重新定位工具的方法 我想把它们放在一边 类似于萤火虫 与我想要的类似
  • CMake 无法确定目标的链接器语言:fileloader

    我知道已经有一些关于这个主题的线程 但是 在阅读其中许多线程后 我无法找到解决我的问题的方法 我正在开发文件加载器 解析器 并且是第一次使用 CMake 我的 CMakeList txt 文件用于导入 XML 解析器 xerces 当前如下
  • Pygame 按键/按键

    我正在为学校的计算机俱乐部制作一个小马里奥 好吧 作为团队的一部分 无论如何 我在使用 keyup keydown 命令时遇到了一些麻烦 这是我的代码 1 Import library import pygame from pygame l
  • WooCommerce 更改加载微调器图标

    IM 尝试更改 WooCommerce 加载旋转图标 它在 woocommerce css 中定义 woocommerce blockUI blockOverlay before height 1em width 1em display b
  • 如何配置应用程序以在具有高 DPI 设置(例如 150%)的计算机上正确运行?

    我用 C 创建了一个简单的 Winforms 应用程序 当我在具有高 DPI 设置 例如 150 的计算机上运行应用程序时 应用程序会放大 到目前为止 一切都很好 但所有文本也只是按比例放大 而不是使用更大的字体大小渲染字体 这当然会导致文
  • 鼠标光标与画布不匹配

    我有一个问题 当我在画布上画一条线时 似乎鼠标位置与画布位置不匹配 所以每当我画画时 光标和画线之间都有一定的距离 请帮助我这个问题 这是我的代码 document ready function context document getEl
  • 卸载矩阵并释放内存

    我可以从文本文件加载矩阵 load mydata txt 问题是我的矩阵文件大约有 250Mb 经过几次这样的加载后 我没有内存来处理下一个文件 如何卸载它并释放资源以供进一步使用 Use clear or 清除变量 默认情况下 MATLA
  • Swift 2.2,包含方法不起作用

    包含方法无法正常工作 即使它与对象匹配 它也会给我错误的结果 我的代码如下 class Generic NSObject NSCoding var genericCode String var genericName String var
  • 为什么 PostgreSQL 适配器 psycopg2 在 Google App Engine dev_appserver.py 中失败?

    我想将 GAE 中的应用程序与 ElephantDB 连接起来 我想使用 lib psycopg2 但发现了一个问题 我在本地安装了该库来测试它并完美运行 然后我将该库安装在我的应用程序的 lib 文件夹中 就像我对其他库所做的很多次一样
  • 命名空间和类同名吗?

    我正在组织一个图书馆项目 并且有一个名为的中央管理器类Scenegraph以及位于 Scenegraph 命名空间中的一大堆其他类 我真正想要的是场景图MyLib Scenegraph和其他类别MyLib Scenegraph 但似乎唯一的