- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在努力理解我应该如何组织/构造一个我已经创建的类。该类执行以下操作:
这是一些描述我正在做的事情的简化代码:
class FilteredCollection
{
public FilteredCollection( SpecialArray<MyLog> myLog)
{
// validate inputs
// filter and validate logs in collection
// in end, FilteredLogs is ready for access
}
Public List<MyLog> FilteredLogs{ get; private set;}
}
但是,为了访问这个集合,我必须执行以下操作:
var filteredCollection = new FilteredCollection( specialArrayInput );
//Example of accessing data
filteredCollection.FilteredLogs[5].MyLogData;
其他关键输入:
我知道这里可能没有“完美”的解决方案,但我确实在努力通过这种设计提高我的技能,我将非常感谢这样做的建议。提前致谢。
编辑:
感谢所有回答者,Dynami Le-Savard 和 Heinzi 确定了我最终使用的方法 - 扩展方法。我最终创建了一个 MyLogsFilter 静态类
namespace MyNamespace.BusinessLogic.Filtering
{
public static class MyLogsFilter
{
public static IList<MyLog> Filter(this SpecialArray<MyLog> array)
{
// filter and validate logs in collection
// in end, return filtered logs, as an enumerable
}
}
}
我可以通过以下方式在代码中创建一个只读集合
IList<MyLog> filteredLogs = specialArrayInput.Filter();
ReadOnlyCollection<MyLog> readOnlyFilteredLogs = new ReadOnlyCollection<MyLog>(filteredLogs);
最佳答案
听起来您对日志做了三件事:
您想将日志存储在一个集合中。标准的 List 集合非常适合,因为它不关心其中的内容,为您提供 LINQ 并允许您使用只读包装器锁定集合
我建议您将您的顾虑分为上述三个步骤。
考虑
interface ILog
{
MarkAsValid(bool isValid);
... whatever data you need to access...
}
将您的验证逻辑放在一个单独的接口(interface)类中
interface ILogValidator
{
Validate(ILog);
}
还有另一个过滤逻辑
interface ILogFilter
{
Accept(ILog);
}
然后使用 LINQ,类似于:
List<MyLog> myLogs = GetInitialListOfLogsFromSomeExternalSystem();
myLogs.ForEach(x => MyLogValidator(x));
List<MyLog> myFilteredLogs = myLogs.Where(x => MyLogFilter(x));
关注点分离使测试和可维护性变得更好。远离单例。由于包括可测试性在内的许多原因,它们不受青睐。
关于c# - 对象设计 : How to Organize/Structure a "Collection Class",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2909254/
有两个资源组织,但配置文件不同,配置文件将如何产生差异? 它与 r4.organization 有什么不同? @ResourceDef(name="Organization", profile="h
我想知道你们中有谁可以在同一天处理多个项目,而每个项目只花很短的时间。或者,如果您能够在同一小时内同时进行两个或三个或更多项目。我有很多事情要做,我开始想知道我怎么能做到这一点?我考虑过使用多个工作区
在我的 C 项目中,我有一个相当大的 utils.c 文件。它真的充满了许多不同种类的实用程序。只是在里面塞了不同的杂项功能,我觉得有点顽皮。例如,它有一些与低级内容相关的实用程序,例如小写()函数,
Closed. This question is off-topic 。它目前不接受答案。 想改善这个问题吗? Update the question 所以它是堆栈溢出的 on-topic。 9年前关
您如何为您的主文件夹中的代码项目组织您的个人工作区?您如何保持工作空间高效地同时处理多个项目? 我的问题最重要的方面在上面。除非您想解决该主题的特定子部分,否则您可以停止阅读。以下是有关工作空间组织的
将开发项目(例如 ASP.NET MVC 应用程序)拆分为多个项目的常见原因是什么?代码组织也可以通过文件夹来完成。多个项目往往会产生循环引用冲突,并通过管理/解决这些冲突来增加复杂性。 所以为什么?
我今天想知道人们在决定将一个源文件拆分成多个较小的文件之前通常在一个源文件中有多少代码。 就我个人而言,我倾向于保持我的文件相当小(在使用 C/C++ 时尤其是头文件)。也就是说,我通常在给定文件中只
我在文件夹组织方面遇到了一些困难,无法组织我正在处理的许多项目。我在 OS X 上工作 - 现在我使用 ~/Development/作为根文件夹,并且我有很多类型的项目。例如,我的 iPhone 应用
它与编程无关,但肯定与开发有关。 我需要一份人类口语列表(通常我们会在其他所有网站上看到可供选择), 在我们的一个项目中需要。如果还包含语言代码信息,并且在 中,那就太好了.txt 格式或任何其他可提
我在 Unix 系统上得到了这个文件路径: Folder1/Folder2/text.txt Folder1 仅包含Folder2,Folder2 包含该文件。所以文件test.txt的路径可以更短-
我想在我的网站上放置一个 Schema.org Organization 项。 我应该只将 JSON-LD 放在联系页面上,还是可以将它添加到网站的每个页面上?什么是最好的解决方案? 最佳答案 使用
您如何到达XCode Provisioning Organizer? 最佳答案 在Xcode中,从“窗口”菜单中选择“管理器”,您将获得一个窗口,该窗口为您提供有关设备和置备配置文件的各种信息。另外,
我正在设置一些用于网站开发的服务器。我希望它以一种相当标准的方式组织起来。你如何组织你的服务器来开发相对较小的网站,每个网站都有一点独特的代码? 我关注的一些细节包括(但不限于): 在开发过程中存在哪
我正在制作我自己的方便函数的小库,并且我正在尝试遵循 Phobos 的命名约定,但我真的很困惑。我怎么知道东西适合哪里? 例子: 如果有像 foldRight 这样的函数在 Phobos 中(基本上是
我在我的 Mac 上设置了多个开发者帐户,现在需要退出我的帐户才能访问其他人的资源。我在任何地方都找不到这样的选择。 知道如何退出 Xcode Organizer 吗? 最佳答案 在最新的 xcode
我目前正在尝试了解 AngularJS 涉及的所有概念,它非常大。我理解了大部分内容,但我仍然不知道如何组织你的应用程序。 让我们举个例子:在主页上,我有几个 block :每个 block 都是简单
查看 matplotlib 文档,我发现了这个示例: http://matplotlib.org/users/tight_layout_guide.html import matplotlib.pyp
我有 .hgt 文件,其中包含 (1201x1201) 个 16 位整数。我将此文件存储在最高级别为 5 的四叉树中。在级别 5 的叶子中,我有点数组列表: public class Point {
我正在为我的应用查看来自 Xcode Organizer 的崩溃报告。 我在下面的屏幕截图中看到了“+ 92”。什么意思? 最佳答案 这应该是方法内部发生错误的位置。如果您使用调试信息格式 dwarf
我可以拥有多个分发证书吗?我正在开发一个应用程序,但当前证书不是我创建的,而是用于另一个应用程序的。该应用程序和证书是由不再在这里的其他人完成的。 我下载了 vert,但在管理器中它告诉我,找不到有效
我是一名优秀的程序员,十分优秀!