成员名称不能与分部类的封闭类型相同

2023-11-27

我定义了一个具有如下属性的分部类:

public partial class Item{    
    public string this[string key]
    {
        get
        {
            if (Fields == null) return null;
            if (!Fields.ContainsKey(key))
            {
                var prop = GetType().GetProperty(key);

                if (prop == null) return null;

                return prop.GetValue(this, null) as string;
            }

            object value = Fields[key];

            return value as string;
        }
        set
        {
            var property = GetType().GetProperty(key);
            if (property == null)
            {
                Fields[key] = value;
            }
            else
            {
                property.SetValue(this, value, null);
            }
        }
    }
}

这样我就可以做到:

 myItem["key"];

并获取Fields字典的内容。但是当我构建时我得到:

“成员名称不能与其封闭类型相同”

Why?


索引器自动具有默认名称Item- 这是您的包含类的名称。就 CLR 而言,索引器只是一个带有参数的属性,您不能声明与包含类同名的属性、方法等。

一种选择是重命名您的类,这样就不会调用它Item。另一种方法是更改​​用于索引器的“属性”的名称,通过[IndexerNameAttribute].

破碎的较短示例:

class Item
{
    public int this[int x] { get { return 0; } }
}

通过更改名称修复:

class Wibble
{
    public int this[int x] { get { return 0; } }
}

或者按属性:

using System.Runtime.CompilerServices;

class Item
{
    [IndexerName("Bob")]
    public int this[int x] { get { return 0; } }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

成员名称不能与分部类的封闭类型相同 的相关文章

  • 进入嵌入式[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 c11 标准和 clang 来使用 strcpy_s

    我正在运行 OS X Sierra 并尝试编译一个使用的 c 程序strcpy s 但是我安装的 clang 编译器使用的是 c99 标准 但是据我读到的 https embeddedgurus com barr code 2017 08
  • 忽略父进程中的信号

    我正在尝试实现一个 shell 程序 我希望 shell 程序忽略 SIG INT ctrl c 但在我的程序中 子进程也会忽略 SIG INT 信号 但它不应该这样做 因为 exec 应该将子进程带到另一个程序 并且该程序默认情况下应该处
  • C# SMO 远程数据库备份到本地机器

    我有一个执行 SQL 数据库备份和恢复的应用程序 这在本地计算机上运行良好 但是如果我针对另一台计算机上托管的 SQL 服务器运行此应用程序 则会出现以下错误 Microsoft SqlServer Management Smo Faile
  • 使用 R.Net 版本 1.5.5 创建 REngine 实例

    我正在尝试创建一个 Hello World 示例R Language using R Net版本1 5 5 从 NuGet 加载 不幸的是 我见过的在线示例都不起作用 这就是我所做的 已安装Microsoft R Open 3 2 4 增强
  • 合并多边形的高效算法

    我有一个多边形列表 在这个列表中 一些多边形重叠 或者接触其他多边形 我的任务是合并所有相互重叠或接触的多边形 我有一个union执行此操作的方法 做到这一点最有效的方法是什么 我目前能想到的是循环遍历多边形列表 检查合并列表以查看该多边形
  • 有什么办法可以让这个 C# 代码更快吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在读取一个大文件 X12 并解析其中的信息 我有两个瓶颈功能 我似乎无法解决 read line 和 get element 有什
  • 缓存友好的矩阵移位功能

    我想将二维方阵的第一行移到最后一行 所以如果我有一个像A这样的矩阵 我想要得到B 我可以使用两个简单的 for 循环来做到这一点 例如 void shift int M int N int A M N int i j temp for i
  • 在“delete this;”语句期间发生了什么?

    请考虑以下代码 class foo public foo foo void done delete this private int x 以下两个选项中发生了什么 并且有效吗 选项1 void main foo a new foo a gt
  • ICSharpCode.Decompiler + Mono.Cecil -> 如何为单个方法生成代码?

    我可以使用 Mono Cecil 和 ICSharpCode Decompiler 生成类型或程序集的代码 但是 如果我尝试为单个方法生成代码 我将收到错误 对象引用未设置为对象的实例 你们能给我任何关于这个的提示吗 提前感谢您的所有帮助
  • Image.FromStream() 方法返回 Invalid Argument 异常

    我正在从智能相机成像器捕获图像 并通过套接字编程从相机接收字节数组 NET 应用程序是客户端 相机是服务器 问题是我在运行时收到 System InvalidArgument 异常 private Image byteArrayToImag
  • 有没有一种方法可以在 TreeView.Nodes 集合中搜索 TreeNode.Text 字段?

    像这样 TreeNode treeNodes treeView Nodes Find searchString true 但我希望它在text字段而不是name field 我不知道有任何内置方法 但你可以使用 LINQ TreeNode
  • autofac 中的条件组件注册

    是否可以根据其他组件的状态有条件地注册组件 就像是 ContainerBuilder RegisterConditionally
  • 调用 Console.ReadLine() 的方法的 C# 单元测试

    我想为名为的类的成员函数创建一个单元测试ScoreBoard它存储了一场比赛中排名前五的球员 问题是我为 SignInScoreBoard 正在呼叫Console ReadLine 这样用户就可以输入他们的名字 public void Si
  • 如何检查我的程序是否有数据通过管道传输到其中

    我正在编写一个应该通过标准输入读取输入的程序 所以我有以下结构 FILE fp stdin 但是 如果用户没有将任何内容通过管道传输到程序中 这就会挂起 我如何检查用户是否确实将数据通过管道传输到我的程序中 例如 gunzip c file
  • 如何使用 XmlSerializer 生成标记前缀

    我想使用 XmlSerializer 生成以下内容
  • 您可以从 AuthorizeAttribute 返回 HTTP 响应而不引发异常吗?

    我在各种控制器上使用 AuthorizeAttribute 可能需要根据请求本身的某些属性返回 403 或 429 请求过多 我完全在自定义 OnAuthorization 实现中实现了它 然后在必要时抛出一个带有适当响应代码的新 Http
  • 即使没有任何转换,也违反了 C 中的严格别名?

    How can i and u i在此代码中打印不同的数字 即使i定义为int i u i 我只能假设我在这里触发了 UB 但我不知道具体是如何触发的 ideone演示 http ideone com Gcv5Xm如果我选择 C 作为语言
  • WPF - 将窗口置于前面

    我有一个 WPF 窗口 我没有关闭它 相反 我执行 Hide 和 Show 它 现在 当我双击记录上网格中的主窗口时 这将触发 Show 窗口 该窗口将始终显示在主窗口后面 我尝试过以下方法 但没有成功 view Show view Act
  • 布尔实现的atomicCAS

    我想弄清楚是否存在错误答案 https stackoverflow com a 57444538 11248508 现已删除 关于Cuda like的实现atomicCAS for bool是 答案中的代码 重新格式化 static inl

随机推荐

  • 使用 Unity 解决命名依赖关系

    我有一个具有 2 个依赖项的服务 一个存储库和一个网关 短信 我需要解析该服务的 2 个不同版本 它们仅在传递给网关的参数之一上有所不同 代码简化如下 public interface IService string DoSomething
  • 将任意字符串映射到 RGB 值

    我有一大堆任意自然语言字符串 对于我的工具来分析它们 我需要将每个字符串转换为唯一的颜色值 RGB 或其他 我需要颜色对比来取决于字符串相似性 字符串与其他字符串越不同 它们各自的颜色应该越不同 如果我总是为同一字符串获得相同的颜色值 那就
  • LoadString 仅在我没有英文字符串表时才有效

    我希望能够以编程方式修改应用程序的语言 或者至少使用 控制面板 gt 区域和语言选项 gt 格式 中指定的语言 如果我添加一个英语字符串表 为其制作一个法语和德语副本 然后删除英语字符串表 我可以以编程方式在加载法语和德语字符串之间切换 如
  • JavaScript 中的大数字字符串

    当我执行以下操作时 alert 2053716830872415770228778006271971120334843128349550587141047275840274143041 toString 我得到 2 053716830872
  • Google App脚本从网站提取数据

    所以我正在写一个脚本来查看在 Google 信息页上完成审核并更新谷歌电子表格 我发现html中保存这个值的行是 span class A7a 103 span 我只需要知道 URL 和 html 代码就可以从页面中提取内容 Use var
  • 如何包含 MVC 部分控件中的 css 文件?

    我正在使用 ASP NET MVC 并且有一个需要包含特定 CSS 和 JS 文件的部分控件 有没有办法让父页面渲染script and link页面 head 部分中的标签 而不是仅仅在部分控件中内联渲染它们 为了澄清我想要包含文件的控件
  • 类型暗示返回 self 的类方法的返回值?

    正如问题所描述的 我想输入提示aself返回 类似 class A def foo self gt what goes here do something return self 我已经尝试过的事情 将其注释为A 添加from future
  • 如何更改内核 I/O 缓冲区大小

    我正在对 I O 密集型应用程序进行一些实验 并试图了解改变内核 I O 缓冲区大小 不同电梯算法等的影响 如何知道内核中 i o 缓冲区的当前大小 内核是否根据需要使用多个缓冲区 我怎样才能改变这个缓冲区的大小 是否有一个配置文件存储此信
  • Oracle 10g 中通过数据库链接的传输是否经过压缩?是否可以?

    我正在通过数据库链接将数据从一个基地传输到另一个基地 使用INSERT INTO SELECT 我想知道通过链接传输的数据是否经过压缩或者可以压缩以避免过多的网络使用 我的带宽非常少 我认为如果还没有完成的话会有所帮助 有一些重复数据删除但
  • 每行带有 ^M 的文本文件

    我刚刚从朋友那里得到了一个源代码文件 该文件是在 UNIX 中创建的 当我使用 NotePad 在 Windows 中打开它时 每一行都有一个额外的空行 带着疑惑 我下载了 Vim 并用它打开了该文件 然后我在每行末尾看到一堆 M 这是什么
  • TFS 2010:如何将工作项链接到变更集

    我想以编程方式将工作项链接到变更集 目前 我已经从我的 C 代码创建工作项并将它们保存到 TFS 代码如下 WorkItem item new WorkItem project WorkItemTypes CustomItem item F
  • 使用system()执行命令时如何设置环境变量?

    我正在 Linux 上编写 C 程序 需要执行命令system 并且在执行该命令时需要设置环境变量 但我不知道在使用时如何设置环境变量system 如果要将与父进程不同的环境变量传递给子进程 可以使用以下组合getenv and seten
  • 获取所有程序的、用户定义的函数

    如何通过以下方式获取所有用户定义函数的列表SQL query 我找到这段代码here SELECT p proname p pronargs t typname FROM pg proc p pg language l pg type t
  • 在 iPad 上使用 Swift UI 禁用分割视图

    有没有办法在 iPad 上的导航视图中使用 SwiftUI 禁用 SplitView 通过设置NavigationViewStyle import SwiftUI struct NavView View var body some View
  • 使用标记模板文字传递更多参数

    我正在与样式组件并使用其标记模板文字语法生成组件 例如 const Button styled button background color papayawhip border radius 3px color palevioletred
  • 遍历 DOM 树

    由于大多数 全部 执行 HTML 清理的 PHP 库 例如 HTML Purifier 严重依赖于正则表达式 因此我认为尝试编写一个使用 DOMDocument 和相关类的 HTML 清理程序将是一个值得尝试的实验 虽然我还处于这个项目的早
  • 使用 GCDAsyncSocket 通过套接字进行 Telnet

    我正在尝试从目标 c 通过 telnet 连接到 Cisco C40 编解码器 在我的计算机上使用终端时 我得到 密码 然而 在进行套接字连接时 需要进行 telnet 协商 我就是这样 但由于某种原因我无法到达上面的 密码 提示 void
  • MySQL会自动优化子查询吗?

    我想运行以下查询 Main Query SELECT COUNT FROM table name WHERE device id IN SELECT DISTINCT device id FROM table name WHERE NAME
  • 覆盖默认的 Android 主题

    我已经能够覆盖任何名称前面带有 android 的主题 但 Android theme xml 还定义了似乎无法覆盖的属性 例如
  • 成员名称不能与分部类的封闭类型相同

    我定义了一个具有如下属性的分部类 public partial class Item public string this string key get if Fields null return null if Fields Contai