多态性、泛型和匿名类型 C#

2024-03-13

考虑以下场景。

文档 -> 部分 -> 正文 -> 项目

文档有部分,部分包含正文。正文有一些文本和项目列表。这些项目就是问题的内容。有时项目是基本的字符串列表,但有时项目包含自定义数据类型的列表。

So:

    public class Document
    {
        public Section[] Sections{get;set;}
    }

    public class Section
    {
         public SectionType Type{get;set;}
         public Body {get;set;}
    }

    public class Body
    {
      //I want the items to be depending on the section type.
      //If e.g. the sectiontype is experience, I want the Items to be created with type //Experience. If sectiontype is default I want the Items to be created with type string
       public Items<T> Items {get;set;}
    }

   public class Items<T>:IEnumerable, IEnumerator
   {
    // Do all the plumbing for creating an enumerable collection
    }

   public class Experience
   {
      public string Prop1{get;set;}
      public string Prop2 {get;set;}
   }

我无法让这个工作。属性 Items 必须由类型定义才能进行编译。我被困在这里了。我可以通过为我使用的每种部分创建一个部分类来轻松解决此问题。但问题是所有其他代码都是相同的,并且该部分上的所有操作都是相同的。唯一不同的是正文中使用的列表类型。

对此的最佳实践是什么。我尝试过泛型、抽象等。如果直接从调用程序创建 Items 类,我可以让它工作,但如果 Items 被声明为另一个类的属性,我就无法让它工作。

如果需要,我可以提供更多详细信息。谢谢你们的支持。


该类无效:

public class Body
{
    public Items<T> Items {get;set;}
}

您需要在这里定义一个具体类型或 makeBody也是泛型类型。所以要么:

public class Body<T>
{
    public Items<T> Items {get;set;}
}

or:

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

多态性、泛型和匿名类型 C# 的相关文章

随机推荐

  • GridSearchCV Pipeline 中的替代不同模型

    我想在 sklearn 中构建一个 Pipeline 并使用 GridSearchCV 测试不同的模型 举个例子 请不要关注具体选择的型号 reg LogisticRegression proj1 PCA n components 2 pr
  • 用户注册时发送电子邮件 - AWS Cognito 联合身份

    当新用户注册时 如何发送电子邮件 触发 lambda 函数 在 编辑身份池 下我只找到了一个同步触发器 如果我理解正确的话 每次用户同步他的数据时都会触发这个 有没有办法仅在 初始 同步或为用户创建某个数据集时触发 lambda 函数 Ed
  • JObject.ToObject() 扩展方法转换存储为字符串的日期时间值

    当使用字符串属性调用 JObject 上的 ToObject 时 会转换日期时间值 class Program static void Main string args var a JObject Parse aprop 2012 12 0
  • 如何让 Jackson 使用单引号或不使用引号生成 json 字符串?

    例如 我想生成一个json字符串ng style th Code th 但杰克逊的结果是 th Code th 读起来并不容易 所以我想要jackson http jackson codehaus org生成带单引号或不带引号的 json
  • PostAuthenticateRequest 多次触发

    我有 Forms 身份验证 需要将自定义对象存储在 HttpContext Current User 和 Thread CurrentPrincipal 中 为此 我监听 PostAuthenticateRequest 事件 然后从数据库读
  • 如何将内存流从我的应用程序传递到 DLL 或从 DLL 检索内存流?

    假设我有一个TMemoryStream我需要传递到我的 DLL 并返回TMemoryStream 位图流 来自 DLL 我想我的 DLL 会有 procedure Process InBuff Pointer InBuffSize Inte
  • 实心画笔属性不绑定

    我有一个 X 类 有一些数据 private string yyy public string YYY get return yyy set yyy value NotifyPropertyChanged YYY private Solid
  • 如何确定平移手势的真实结束速度?

    使用时UIPanGestureRecognizer并检测UIGestureRecognizerStateEnded 那么手势的速度就不是真实的速度 相反 它是先前调用我的操作方法的旧速度 如何获取手势结束时的真实速度 我创建我的UIPanG
  • 无需编译即可检查变量实现接口

    我想知道具体类型是否实现特定接口并将其打印出来 我编写了一个示例 0 其中包含自定义结构 MyPoint 而不是接口类型 MyPoint 具有 io Reader 接口中定义的 Read 函数 type MyPoint struct X Y
  • 找到删除分支的人?

    我需要找到在正在合作的项目中删除分支的人 通过检查 repo 文件夹 文件 git refs heads 我找不到包含该信息的任何元数据 找到这个 他有什么办法 您可以在组织仪表板的活动部分下查看此详细信息 只有组织所有者有权访问此页面 h
  • 如何在 Android Studio 中忽略库的 minSdkVersion?

    在我的项目中 minSdkVersion 10 在库中是 11 I get BUILD FAILED Manifest merger failed uses sdk minSdkVersion 10 cannot be smaller th
  • Angular UI 路由器忽略 HTML5 模式关闭

    Angular UI Router 忽略 HTML5Mode false 并且它以无法添加书签或直接登陆的方式呈现链接 app js stateProvider state search url search views main wrap
  • 在 Fortran 中写入现有文件而不覆盖

    我有一个由 Fortran 程序编写的现有文件 已格式化 我想在文件开头添加几行 我们的想法是在不复制原始文件的情况下完成此操作 我可以在文件末尾添加一行 open 21 file myfile dat status old action
  • 从 Java 7 升级到 Java 8 后签名引用失败

    我最近已将 Java 从 7 升级到 8 并且我面临使用 saml 请求的服务之一的问题 我收到以下错误 Jan 05 2015 3 42 06 PM org jcp xml dsig internal dom DOMReference v
  • 在项目的根目录下创建 .env 文件

    我正在尝试从 github 下载一个 Django 项目 其中一个要求是 由于该项目使用 python de Couple 因此您需要在项目的根目录上创建一个名为 env 的文件 其中包含三个值 如下所示 DEBUG True SECRET
  • 将单词 (.docx) 转换为 docbook

    我的任务是找到一种将大量 docx 文件转换为 docbook 5 的方法 目前 我们在 openoffice 中打开该文件并保存到 docbook 这是一项耗时的任务 但我相信有更好的方法 然后 这些文件将被进一步处理为我们的自定义rel
  • 如何在 CMake 中删除字符串中的一行文本,解决 CMake 缺乏基于行的正则表达式匹配的问题?

    我发现 CMake 并没有按照我预期的方式执行 RegEx 显然 其他人也遇到了同样的问题 https cmake org pipermail cmake 2007 October 017107 html问题是 CMake 不是基于行的 当
  • Pip无法安装枕头

    当尝试使用 pip 安装枕头时 会产生此错误 我尝试过重新安装安装工具 但没有效果 我在安装了 Diet Pi 的 pi 0 上运行 pip install pillow Looking in indexes https pypi org
  • Objective-C 中的文本解析?

    是否有任何库可以在 Objective C iPhone 应用程序中解析 Textile Textile 到 HTML C 库也可以工作 Update 我在 C Obj C 中找不到任何足够开发的库 但我确实找到了一个用 Javascrip
  • 多态性、泛型和匿名类型 C#

    考虑以下场景 文档 gt 部分 gt 正文 gt 项目 文档有部分 部分包含正文 正文有一些文本和项目列表 这些项目就是问题的内容 有时项目是基本的字符串列表 但有时项目包含自定义数据类型的列表 So public class Docume