假设我有以下类层次结构:
class Base
{
virtual int GetClassID(){ return 0;};
public:
Base() { SomeSingleton.RegisterThisObject(this->GetClassID());
}
class Derived
{
virtual int GetClassID(){ return 1;};
public:
Derived():Base(){};
}
Run Code Online (Sandbox Code Playgroud)
嗯,这一切都从我的实际情况简化,但这是它的一般要点.
我想避免在每个派生类的构造函数中调用RegisterThisObject,所以我试图将调用移动到基类的构造函数.
是否有任何模式可用于在不使用构造函数中的虚方法的情况下完成此操作?
我有一个调度成功和失败事件的类,我需要维护一个关于该类最后X秒内的平均失败次数/事件总数的统计数据.
我正在考虑使用循环链表并为每个事件附加成功或失败节点.然后计算列表中的故障节点数与总节点数,但这有两个主要缺点:
有没有人知道从最近X秒收到的样本列表中计算平均值的另一种方法?
从SQL列读取一些数据然后将其转换为XML时出现此错误:
"System.InvalidOperationException:XML文档中存在错误(182,16).---> System.Xml.XmlException:'',十六进制值0x0B,是无效字符."
很公平,也许数据格式不正确.除了,我怎么能找到罪魁祸首?
SELECT * from Mytable where Column like '%' + char(0x0B)+'%'
Run Code Online (Sandbox Code Playgroud)
返回空.
(显然我尝试了所有%+ char,char,char +%组合,以防万一)
我有这种模式,我需要从列表中选择任何随机元素,而不是当前的元素(作为参数传递).我想出了这个方法:
public Element GetAnyoneElseFromTheList(Element el)
{
Element returnElement = el;
Random rndElement = new Random();
if (this.ElementList.Count>2)
{
while (returnElement == el)
{
returnElement = this.ElementList[rndElement.Next(0,this.ElementList.Count)];
}
return returnElement;
}
else return null;
}
Run Code Online (Sandbox Code Playgroud)
但是,虽然循环一直困扰着我几天,但我需要睡一会儿.还有其他好办法吗?即.以固定数量的步骤返回的东西?
编辑:在我的情况下,列表保证包含要避免的"el"元素,并且列表不包含重复项,但是看到一些更一般的情况也很有趣.
我处于可以为我的网络应用程序选择客户端浏览器的位置.该应用程序正在内部使用,我们正在"手动"安装每个客户端.我想为浏览器找到更好的解决方案,因此:
什么是一个好的浏览器,我可以用作Web应用程序的客户端?
我想要的一般功能:
IE7和FireFox是很好的候选者,但每个人似乎都有自己的问题和问题.
我得到了一个让我感到困惑的奇怪错误:我有一个函数..uhm ...这样的事情:
void someFunctionTakingALong( long ID)
{
var table = new DataTable();
table .Columns.Add(new DataColumn("RID", Type.GetType("System.Int64")));
table.Rows.Add(ID); //<-- throws err
}
Run Code Online (Sandbox Code Playgroud)
抛出此错误:
System.ArgumentException: Input string was not in a correct format.Couldn't store in RID Column. Expected type is Int64. ---> System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt64(String value, NumberStyles options, NumberFormatInfo numfmt)
at System.String.System.IConvertible.ToInt64(IFormatProvider provider)
at System.Data.Common.Int64Storage.Set(Int32 record, Object value)
at System.Data.DataColumn.set_Item(Int32 record, Object value) …Run Code Online (Sandbox Code Playgroud)