问题列表 - 第13256页

C# - 如何从工厂方法创建继承的泛型集合

我正在尝试编写一个工厂方法,该方法将创建抽象泛型集合类的派生实例.这是基类......

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>.

有人可以指点我正确的方向吗?谢谢.

c# factory constraints generic-collections

2
推荐指数
1
解决办法
1240
查看次数

从SQL Server中的子查询值或其他聚合函数获取平均值

我有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行的平均值?

sql t-sql sql-server

24
推荐指数
2
解决办法
4万
查看次数

如何在网页上显示HTML代码(实体)?

你怎么写html代码让用户在网页上看到它(比如html的方法)

html

7
推荐指数
1
解决办法
2万
查看次数

我可以在闭源应用程序中动态调用LGPL/GPL软件吗?

我想使用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并发布源代码,但这不是我的意思.

所以问题是:我可以像现在这样使用它,还是会被一大批律师处决?

ffmpeg

50
推荐指数
2
解决办法
3万
查看次数

确定最有争议的锁?

我们的应用程序有~10个线程执行单独的任务(没有线程池).我们没有遇到死锁,但总是试图降低响应请求的延迟,因此我们有兴趣确定哪些锁是最有争议的.jconsole显示了线程被阻塞的频率,并且不常见,但我们仍然想知道哪些锁是最有争议的.

我们正在使用Sun JVM运行,因此来自IBM的JLA没用,我们没有在Solaris上运行,所以我们不能使用dTrace.

编辑:我想在制作中进行这种观察,其中探查器会使应用程序变得无法接受.这是一个交易系统,如果我们很慢,我们会亏钱,所以我们不会在生产中运行分析器.在性能测试中模拟我们交谈的许多交换也很困难.

java multithreading

8
推荐指数
2
解决办法
285
查看次数

Unity将两个接口注册为一个单例

如何在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实现了两个接口,如果我解析接口,我想要对同一个对象的引用.

克里斯

unity-container

42
推荐指数
3
解决办法
2万
查看次数

为什么log4Net中没有跟踪级别?

我只是想知道为什么log4Net中没有跟踪级别.这个级别似乎缺失了,我有时觉得需要使用它,例如输出应用程序中正在执行的事件.此功能是log4J一部分.

我知道我可以创建一个像这里谈到的自定义级别,但我不想把时间和精力放在我认为应该成为库本身的一部分的东西上.

你知道一个实现这个的log4net扩展库,或者为什么这不是.net端口的一部分?

c# vb.net log4net

32
推荐指数
3
解决办法
1万
查看次数

6
推荐指数
2
解决办法
2455
查看次数

AVL树是邪恶的吗?

我正在阅读Steve Yegge关于单身人士的文章.在其中他提到他的老师告诉他AVL树是邪恶的.只是红色和黑色的树木是更好的解决方案吗?

algorithm binary-tree avl-tree red-black-tree

24
推荐指数
2
解决办法
5176
查看次数

嵌入 IronPython - 无法添加对系统的引用

我在我的 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 解释器中测试时,这一切正常。

.net ironpython

3
推荐指数
1
解决办法
2517
查看次数