我正在尝试编写一个工厂方法,该方法将创建抽象泛型集合类的派生实例.这是基类......
abstract class ItemBase { }
abstract class CollectionBase<T> : Collection<T> where T : ItemBase, new() { }
Run Code Online (Sandbox Code Playgroud)
......及其派生类......
class Item : ItemBase { }
class ItemCollection : CollectionBase<Item> {}
Run Code Online (Sandbox Code Playgroud)
现在,我想要一个将创建ItemCollection的工厂方法.但请注意,派生类Item和ItemCollection对于包含此工厂方法的类是未知的.这就是我想象的应该......
static T CreateItemCollection<T>() where T : CollectionBase<ItemBase>, new()
{
return new T();
}
Run Code Online (Sandbox Code Playgroud)
......我想像这样调用它......
var collection = CreateItemCollection<ItemCollection>();
Run Code Online (Sandbox Code Playgroud)
但是工厂方法不会编译,因为ItemBase必须具有无参数构造函数.并且invokation调用拒绝相信ItemCollection来自CollectionBase<ItemBase>.
有人可以指点我正确的方向吗?谢谢.
我有SQL语句(SQL Server)
SELECT
COUNT(ActionName) AS pageCount
FROM tbl_22_Benchmark
WHERE DATEPART(dw,CreationDate)>1 AND DATEPART(dw,CreationDate)<7
GROUP BY
dateadd(dd,0, datediff(dd,0,CreationDate))
产生输出
pageCount
27
19
59
现在我想用SQL获得所有这些数字的平均值.显然嵌套的聚合函数就像
(AVG(COUNT(PAGECOUNT)))
是不允许的,并使用子查询
SELECT AVG(pageCount) FROM
(
SELECT
COUNT(ActionName) AS pageCount
FROM tbl_22_Benchmark
WHERE DATEPART(dw,CreationDate)>1 AND DATEPART(dw,CreationDate)<7
GROUP BY
dateadd(dd,0, datediff(dd,0,CreationDate))
)
得到我只是一个错误消息')'附近的语法不正确.
如何获得pageCount行的平均值?
我想使用GNU宽通用公共许可证下的工具(ffmpeg),某些组件的版本2.1 GNU通用公共许可证(GPL)版本2.
为此,我只在我的软件中调用它:
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = new System.Diagnostics.ProcessStartInfo("lgplSoftware.exe", myParams);
p.Start();
Run Code Online (Sandbox Code Playgroud)
我不改变它,我只使用Windows的内置版软件.
维基百科说:
与GPL相关的关键争议是非GPL软件是否可以动态链接到GPL库.GPL明确要求GPL下的所有衍生代码必须属于GPL.虽然可以理解静态链接产生衍生作品,但是不清楚动态链接到GPL代码的可执行文件是否应被视为衍生作品(参见Weak Copyleft).免费/开源软件社区在这个问题上是分开的.FSF声称,如果可执行文件和GPL代码"使函数调用彼此并共享数据结构",某些其他人同意(例如Jerry Epplin),那么这样的可执行文件确实是衍生作品,而某些(例如
所有这些合法的事情我都很困惑.我也会把我的项目放到LGPL并发布源代码,但这不是我的意思.
所以问题是:我可以像现在这样使用它,还是会被一大批律师处决?
我们的应用程序有~10个线程执行单独的任务(没有线程池).我们没有遇到死锁,但总是试图降低响应请求的延迟,因此我们有兴趣确定哪些锁是最有争议的.jconsole显示了线程被阻塞的频率,并且不常见,但我们仍然想知道哪些锁是最有争议的.
我们正在使用Sun JVM运行,因此来自IBM的JLA没用,我们没有在Solaris上运行,所以我们不能使用dTrace.
编辑:我想在制作中进行这种观察,其中探查器会使应用程序变得无法接受.这是一个交易系统,如果我们很慢,我们会亏钱,所以我们不会在生产中运行分析器.在性能测试中模拟我们交谈的许多交换也很困难.
如何在Unity中使用相同的实例注册两个不同的接口...目前我正在使用
_container.RegisterType<EventService, EventService>(new ContainerControlledLifetimeManager());
_container.RegisterInstance<IEventService>(_container.Resolve<EventService>());
_container.RegisterInstance<IEventServiceInformation>(_container.Resolve<EventService>());
Run Code Online (Sandbox Code Playgroud)
哪个有效,但看起来不太好..
所以,我认为你明白了.EventService实现了两个接口,如果我解析接口,我想要对同一个对象的引用.
克里斯
我正在阅读Steve Yegge关于单身人士的文章.在其中他提到他的老师告诉他AVL树是邪恶的.只是红色和黑色的树木是更好的解决方案吗?
我在我的 C# 应用程序中嵌入了 IronPython。出于某种原因,我在加载程序集时遇到了问题。具体来说,我想要 System.dll,这样我就可以访问 DateTime 等 .NET 类。
如果我尝试这一行:
_runtime.LoadAssembly(_runtime.Host.PlatformAdaptationLayer.LoadAssembly("System"));
Run Code Online (Sandbox Code Playgroud)
我得到:
could not load file or assembly 'System'
Run Code Online (Sandbox Code Playgroud)
如果我明确输入 C:/WINDOWS/Microsoft.NET/.../System.dll 的路径,我会得到:
The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
Run Code Online (Sandbox Code Playgroud)
然后我尝试在 Python 脚本中使用 clr 进行导入:
import clr
clr.AddReference('System')
from System import DateTime
Run Code Online (Sandbox Code Playgroud)
现在我得到:
Cannot import name DateTime
Run Code Online (Sandbox Code Playgroud)
我哪里错了?为什么DateTime 不在System 中,为什么LoadAssembly 找不到System.dll?我是否需要明确地为 IronPython 设置一些搜索路径?是否找到无效的“系统”?
当我在 IronPython 解释器中测试时,这一切正常。
c# ×2
.net ×1
algorithm ×1
avl-tree ×1
binary-tree ×1
constraints ×1
factory ×1
ffmpeg ×1
html ×1
ironpython ×1
java ×1
log4net ×1
scala ×1
sql ×1
sql-server ×1
t-sql ×1
vb.net ×1