我怎么能有一个抽象枚举,或某种基本枚举?
在我的通用代码中,我想要一个枚举占位符MyRetems的概念,而不是将自己与具体的枚举联系起来.然后在我的每个项目中,我都会有一个具体的实现.
例如共同代码
public interface MyItems {
// Marker interface
}
Run Code Online (Sandbox Code Playgroud)
项目A.
public enum Items implements MyItems {
RED_CAR, BLUE_CAR, GREEN_CAR;
}
Run Code Online (Sandbox Code Playgroud)
项目B.
public enum Items implements MyItems {
BROWN_TREE, GREEN_TREE;
}
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但在我的公共代码中,我不能在我的接口枚举上写一个循环,因为它不是枚举.在我的常用代码中,我想写
for (MyItems item : MyItems.values())
doSomething(item);
Run Code Online (Sandbox Code Playgroud)
但我不能,因为我的界面只是一个标记界面,它没有.values().
任何建议都非常感谢.我不知道我是否完全以错误的方式尝试.
我希望能够在我的应用程序中为数据库中的面板存储backgroundcolor.
值可以是具体颜色或空,表示它已从父项继承.
我想通过调用System.Drawing.Color.ToArgb()方法将它存储在一个不可为空的int字段中.
对于白色,此方法的返回值似乎为-1,对于黑色,此方法的返回值为-16777216 ...
所以我在想,为了表明没有选择颜色,我可以存储一个正整数.这将提供一种非常简单的方法来检查是否已存储显式颜色或是否已存储颜色.
现在我想知道System.Drawing.Color.ToArgb()是否能够返回正值的合理原因.(此功能的可能返回值的范围是多少).
我没有篡改alpha通道,所以我不知道这是否会产生影响....
如果我无法存储一个正整数来表示显式颜色的偏差,我想我只需要使该字段可以为空......
请在Quartz Scheduler和线程池上提供一些示例
我正在我的mysql数据库上运行一个SQL查询,但由于某种原因它的区分大小写,如果一个条目存在为'NAME = Andrew'运行一个SQL查询,如:
SELECT * WHERE NAME Like 'and%'
Run Code Online (Sandbox Code Playgroud)
不起作用但是
SELECT * WHERE NAME Like 'And%'
Run Code Online (Sandbox Code Playgroud)
有用吗?WHat给我运行一个php mysql设置在这里...
作为流程改进的一部分,我们正在努力确保我们所有的项目都有合适的单元测试,因为我需要进行一些教育,我正在努力确定究竟什么是确保我们将课程设为"可测试"的最佳方法尽可能.
我怀疑我们将开始向下移动Mock对象路径,并且大多数示例我已经看到它们接口来模拟对象的实现.所以我的问题是我们应该确保所有类都有一个从中派生的接口吗?
如果不是,你会建议在识别应该有接口的类以允许它们被模拟的过程中是什么?
我有一个每天通过cron运行的bash脚本.
在这个bash中我想运行一些命令,但每隔x天(x是固定的,将是3,4或5我目前不知道)
我可以测试一下除法日/ x的剩余部分是否等于0
day_of_month%x = 0
我将在一个月内工作但不总是在一个月之间,例如4月份的月份 - 可能是x = 3
1 2 3 4 5 6 7 8 9 ... 27 28 29 30 31 1 2 3 4 5 6 7 8 9 ... 27 28 29 30
x x x ... x x x x x ... x x
Run Code Online (Sandbox Code Playgroud)
这不是什么大问题,但有没有其他方法可以做到这一点?
PS:我不想爆炸我的脚本并制作2个cron作业(每天一个:*,另一个xvevery x天:*/x)
我有一个应用程序,它在用户设置中存储对象集合,并通过 ClickOnce 进行部署。应用程序的下一版本对存储的对象类型进行了修改。例如,之前版本的类型是:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
新版本的类型是:
public class Person
{
public string Name { get; set; }
public DateTime DateOfBirth { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
显然,ApplicationSettingsBase.Upgrade不知道如何执行升级,因为 Age 需要使用 进行转换(age) => DateTime.Now.AddYears(-age),因此只有 Name 属性会被升级,而 DateOfBirth 将只有 Default(DateTime) 的值。
所以我想通过重写提供一个升级例程,ApplicationSettingsBase.Upgrade它将根据需要转换值。但我遇到了三个问题:
ApplicationSettingsBase.GetPreviousVersion,返回的值将是当前版本的对象,该对象没有 Age 属性并且具有空的 DateOfBirth 属性(因为它无法将 Age 反序列化为 DateOfBirth)。我想知道Microsoft的Visual C++编译器是否以及在何种程度上符合当前的C(C90/C99)和C++(ISO/IEC 14882:2003)标准.不幸的是,我只能找到关于这个主题的部分信息,我可能会看到所有错误的地方.
任何指向相关资源的指针都非常感谢.提前致谢.
编辑:因为看起来这是一个最敏感的主题,我会满足于是否MSVC完全符合C90的是/否答案...我已经明白,这不是C99的情况(自然而然,我仍然不知道C++ ..
Edit2:感谢大家的回答.我已经接受了Rushakov先生的回答,但对所有相关答案都提出了异议,这些答案都很有帮助.
对于未捕获的异常,Python默认打印堆栈跟踪,异常本身,并终止.是否有人知道在程序级别定制此行为的方法(除了建立我自己的全局,catch-all异常处理程序),以便省略堆栈跟踪?我想在我的应用程序中切换是否打印堆栈跟踪.