小编Asm*_*mor的帖子

DllNotFoundException,但DLL就在那里

所以我使用SDK作为硬件随机数生成器,它提供了一个名为PsyREG.dll的dll用于与之交互,以及一些c#source用于使用dll中的方法.

它过去曾奏效,但不知怎的,它已停止运作.我的手有点束缚,因为我现在实际上无法访问有问题的设备,所以我不能尝试很多东西......

然而,这是奇怪的事情.dll在那里,它始终是同一个地方.Ahd实际上File.Exists("PsyREG.dll")返回true,我已经双重检查,这与提供的c#source导入它的方式完全相同,例如[DllImport("PsyREG.dll")].

有任何想法吗?

c# dllnotfoundexception

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

在实践中私人与公共成员(封装有多重要?)

面向对象编程的最大优点之一是封装,我们(或者至少,我已经)教过的"真理"之一是成员应该始终保持私密并通过访问者和变异器提供方法,从而确保验证和验证更改的能力.

不过,我很好奇,这在实践中有多重要.特别是,如果你有一个更复杂的成员(例如集合),那么将它公开而不是制作一堆方法来获取集合的密钥,添加/删除集合中的项目是非常诱人的,等等

你一般遵守规则吗?你的答案是否会改变,取决于它是为自己编写的代码还是其他人使用的代码?这种混淆是否有更微妙的原因?

language-agnostic encapsulation

22
推荐指数
3
解决办法
3359
查看次数

SQL查询长度的实际限制(特别是MySQL)

拥有一个非常非常大的SQL查询以及许多(可能是多余的)WHERE子句是否特别糟糕?

例如,这是我从我的Web应用程序生成的一个查询,其中所有内容都已关闭,这应该是此程序生成的最大可能查询:

SELECT * 
FROM 4e_magic_items 
INNER JOIN 4e_magic_item_levels 
  ON 4e_magic_items.id = 4e_magic_item_levels.itemid 
INNER JOIN 4e_monster_sources 
  ON 4e_magic_items.source = 4e_monster_sources.id 
WHERE (itemlevel BETWEEN 1 AND 30)  
  AND source!=16 AND source!=2 AND source!=5 
  AND source!=13 AND source!=15 AND source!=3 
  AND source!=4 AND source!=12 AND source!=7 
  AND source!=14 AND source!=11 AND source!=10 
  AND source!=8 AND source!=1 AND source!=6 
  AND source!=9  AND type!='Arms' AND type!='Feet' 
  AND type!='Hands' AND type!='Head' 
  AND type!='Neck' AND type!='Orb' 
  AND type!='Potion' AND type!='Ring' 
  AND type!='Rod' AND type!='Staff' 
  AND type!='Symbol' …
Run Code Online (Sandbox Code Playgroud)

mysql sql optimization

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

使用lodash查找具有truthy值的JS对象的属性

假设我有一个像这样的对象:

var foo = {
    alpha: true,
    beta: false,
    gamma: true
}
Run Code Online (Sandbox Code Playgroud)

我可以使用_.findKey来获取一个具有真值的键,但我真的想要一个包含所有具有真值的键的数组.例如

_.findAllKeys(foo, function(val) { return val; });
// yields -> ["alpha", "gamma"]
Run Code Online (Sandbox Code Playgroud)

写一个函数来做这个很简单,但是看起来像findKey的这种明显的概括,我觉得我必须错过它.lodash有这样的功能吗?

javascript lodash

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

生成最短的正则表达式以匹配任意单词列表

我希望有人可能知道一个脚本可以采用任意单词列表并生成可以完全匹配该列表的最短正则表达式(并且没有别的).

例如,假设我的列表是

1231
1233
1234
1236
1238
1247
1256
1258
1259
Run Code Online (Sandbox Code Playgroud)

那么输出应该是:

12(3[13468]|47|5[589])
Run Code Online (Sandbox Code Playgroud)

regex

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

localStorage在Firefox中不可靠

我正在为我玩的纸牌游戏开发甲板建筑应用程序.我正在使用localStorage来保存和检索套牌.它似乎在Chrome中运行完美,但在Firefox中,它的运行方式并不可靠.

在FF中,一开始似乎一切正常,甲板甚至会在重新加载时继续存在.但是,如果我添加第二个套牌并重新加载,它只会找到第一个套牌.如果我删除第一个牌组,它就不再找到任何东西了.

所有本地存储交互都在scripts/vault.js中,我将在下面重现.难道我做错了什么?

vault = {};
vault.makeKey = function (s) {
    return "deck:" + s;
};
vault.friendlyName = function(s) {
    if (s.indexOf("deck:") === 0) {
        return s.substring(5);
    } else {
        return s;
    }
};
vault.store = function (deck, name) {
    if (!window.localStorage) {
        alert("This browser doesn't support local storage. You will be unable to save decks.");
        return;
    }
    var key = vault.makeKey(name);
    localStorage.setItem(key, deck.export());
};
vault.retrieve = function (key) {
    deck.import(localStorage[key]);
};
vault.getDecks = function () {
    var …
Run Code Online (Sandbox Code Playgroud)

javascript firefox local-storage

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

更改C#字典中项目的基数

我有一本字典,就像

Dictionary<Foo,String> fooDict
Run Code Online (Sandbox Code Playgroud)

我逐步完成字典中的所有内容,例如

foreach (Foo foo in fooDict.Keys)
    MessageBox.show(fooDict[foo]);
Run Code Online (Sandbox Code Playgroud)

它按照foos添加到字典的顺序执行此操作,因此添加的第一个项目是返回的第一个foo.

如何更改基数,例如,添加的第三个foo将返回第二个foo?换句话说,我想改变它的"索引".

c# dictionary cardinality

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

将ListView与对象集合相关联

如何使用ListView向用户显示对象集合并管理这些对象?

c# listview dictionary

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

根据另一个表上的条件在一个MySQL表中查找条目

我有一张硬件表和事件表.每个硬件都有一个唯一标记,事件与标记相关联.

如何选择至少有一个事件列为未解决的所有硬件?

我不能只是做一个连接,因为如果一个硬件有多个未解决的问题,它会出现多次.

mysql conditional normalization

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

问题反序列化经过验证的XML,无法转换为数组或从数组转换

我有点偏离我的元素.我已经使用xsd.exe从xml文件创建xsd架构,然后从该xsd创建一个C#类.这一切似乎都很好.

目前我只是想让XML反序列化.我正在反序列化文件,如果我最初用于构建类的文件相同.这是我的代码:

String xsdPath=@"C:\Users\tol56881\Documents\dnd4e.xsd";
String xmlPath=@"C:\Users\tol56881\Documents\dnd4e.xml";
String xsdNamespace="";

//Validation stuff
XmlParserContext context = new XmlParserContext(null, null, "", XmlSpace.None);
XmlValidatingReader vr = new XmlValidatingReader(xmlPath, XmlNodeType.Element, context);
vr.ValidationType = ValidationType.Schema;
vr.Schemas.Add(xsdNamespace, xsdPath);
while (vr.Read()) ;

//Actually reading the file
TextReader tr = new StreamReader(xmlPath);
D20Character character = (D20Character)(new XmlSerializer(typeof(D20Character))).Deserialize(tr);
Run Code Online (Sandbox Code Playgroud)

它编译得很好,但是当我尝试运行它时,我得到了一个错误,它重复了四个不同的对象.我在下面给出了一个例子,更改了对象的名称.

Unable to generate a temporary class (result=1).
error CS0030: Cannot convert type 'Namespace.ObjectName[]' to 'Namespace.ObjectName'
error CS0029: Cannot implicitly convert type 'Namespace.ObjectName' to 'Namespace.ObjectName[]'
Run Code Online (Sandbox Code Playgroud)

所以看起来程序试图从数组到对象再回到数组,但我不太确定.自动生成的类代码是一个巨大的混乱,很难通过.我希望也许这里有一些简单的我在这里缺席.

谢谢!

c# xml serialization xsd xsd.exe

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