我正在尝试构建一个看起来像这样的对象:
public class MyObject
{
private IList<AnotherObject> items;
public List<AnotherObject> Items
{
return items.AsEnumerable().ToList<AnotherObject>();
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用NHibernate作为我的DAL并将其直接映射到items字段,所有这些都可以正常工作.
我也使用Windows Workflow,复制器活动不适用于通用IList.(http://social.msdn.microsoft.com/Forums/en-US/windowsworkflowfoundation/thread/2ca74b60-fd33-4031-be4b-17a79e9afe63)这基本上迫使我使用List <>包装而不是IList < >.这当然打破了直接的NHibernate映射,因为NHibernate的IList实现不能直接转换为List.
**编辑:Windows Workflow要求实际上意味着我将失去对列表的类型安全访问,无论它需要IList.
现在的目标是序列化/反序列化此对象.这适用于二进制序列化,但当我尝试反序列化时,底层的NHibernate代理对象会出现nhibernate错误.
所以我尝试了xml序列化.序列化工作正常,并在序列化的xml文件中给出了我很好的具体类定义,它完全剥离了nhibernate代理.但是,当尝试反序列化时,我无法将项目添加到列表中作为items.AsEnumerable.ToList调用将不允许项目通过.Add方法添加到基础列表.
有没有人对此有任何想法?我是以错误的方式来做这件事的吗?
**编辑:NHibernate具体类是NHibernate.Collection.Generic.PersistentGenericBag确实直接实现IList.但是,我失去了通用列表的所有类型安全的好处.这让我回到必须为每个子对象编写包装器的领域,如果可能的话我真的想避免这种情况.
我的老板出于某种原因想尝试在JavaScript中实现A/B测试(或拆分测试).有谁知道任何好的JavaScript包/库/解决方案来实现A/B测试?
F#中的任何函数是否类似于LINQ流畅语法,可以按多个表达式进行排序:
myList.OrderBy(fun x->x.Something).ThenBy(fun x->x.SomethingElse)
Run Code Online (Sandbox Code Playgroud)
我喜欢这样的东西:
myList
|> Seq.sort_by(fun x->x.Something)
|> Seq.then_by(fun x->x.SomethingElse)
Run Code Online (Sandbox Code Playgroud)
谢谢
我有2个不同的Java项目,一个有2个类:dynamicbeans.DynamicBean2和dynamic.Validator.
在另一个项目中,我动态加载这两个类并将它们存储在一个 Object
class Form {
Class beanClass;
Class validatorClass;
Validator validator;
}
Run Code Online (Sandbox Code Playgroud)
然后我继续创建一个Validator对象validatorClass.newInstance()并使用它validator然后我创建一个bean对象并使用beanClass.newInstance()并将其添加到会话中.
portletRequest.setAttribute("DynamicBean2", bean);
Run Code Online (Sandbox Code Playgroud)
在Form项目的生命周期中,我调用validator.validate()从会话中加载先前创建的bean对象(我正在运行Websphere Portal Server).当我尝试将此对象强制转换为DynamicBean2失败并出现ClassCastException时.
当我将对象拉回会话时使用
faces.getApplication().createValueBinding("#{DynamicBean2}").getValue(faces);
Run Code Online (Sandbox Code Playgroud)
并使用.getClass()我得到检查它的类dynamicbeans.DynamicBean2.这是我想要将它强制转换为的类,但是当我尝试获取ClassCastException时.
我得到这个的原因是什么?
我有两张桌子:玩具和游戏.
+--------------------+------------------+
| Field | Type |
+--------------------+------------------+
| toy_id | int(10) unsigned |
| little_kid_id | int(10) unsigned |
+--------------------+------------------+
+--------------------+------------------+
| Field | Type |
+--------------------+------------------+
| game_id | int(10) unsigned |
| little_kid1 | int(10) unsigned |
| little_kid2 | int(10) unsigned |
| little_kid3 | int(10) unsigned |
+--------------------+------------------+
Run Code Online (Sandbox Code Playgroud)
一个小孩可以有多个玩具.一个小孩可以同时参加多个游戏.
我想要一个查询,它会给我一个little_kid所涉及的玩具+游戏的总数.
基本上,我想要这两个查询的总和:
SELECT COUNT(*) FROM Toys WHERE little_kid_id = 900;
SELECT COUNT(*) from Games WHERE little_kid1 = 900
OR little_kid2 = 900
OR little_kid3 = 900; … 我有一个方法来替换除我指定的字符之外的每个字符.例如,
ReplaceNot("test. stop; or, not", ".;/\\".ToCharArray(), '*');
Run Code Online (Sandbox Code Playgroud)
会回来的
"****.*****;***,****".
现在,这不是过早优化的实例.我在网络操作期间多次调用此方法.我发现在更长的字符串上,它会导致一些延迟,并且删除它会有所帮助.任何有助于加快这一点的帮助将不胜感激.
public static string ReplaceNot(this string original, char[] pattern, char replacement)
{
int index = 0;
int old = -1;
StringBuilder sb = new StringBuilder(original.Length);
while ((index = original.IndexOfAny(pattern, index)) > -1)
{
sb.Append(new string(replacement, index - old - 1));
sb.Append(original[index]);
old = index++;
}
if (original.Length - old > 1)
{
sb.Append(new string(replacement, original.Length - (old + 1)));
}
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
最后的#.我还为一个3K字符串添加了一个测试用例,运行时间为100K而不是1M,以查看每个字符串的大小.唯一令人惊讶的是,正则表达式"比其他表达式更好",但它没有任何帮助,因为它开始时非常缓慢:
User Short * 1M Long * 100K …
我想知道是否可以将C#代码片段保存到文本文件(或任何输入流),然后动态执行它们?假设提供给我的内容可以在任何Main()块中编译好,是否可以编译和/或执行此代码?出于性能原因,我更愿意编译它.
至少,我可以定义一个他们需要实现的接口,然后他们将提供一个实现该接口的代码"section".
跨本地计算机共享源的最佳方法是什么?
我正在开发一个带有svn存储库的跨平台项目.我在一个平台(可能是osx)上执行结账,并进行更改.然后我必须在其他平台上测试我修改过的代码(xp,vista,...)然后再检查它.在机器之间手动复制文件或从网络驱动器运行所有内容是一件痛苦的事情......我有更好的选择吗?
我试图看看是否可以使用列表推导更好地使这些代码.
可以说我有以下列表:
a_list = [
'HELLO',
'FOO',
'FO1BAR',
'ROOBAR',
'SHOEBAR'
]
regex_list = [lambda x: re.search(r'FOO', x, re.IGNORECASE),
lambda x: re.search(r'RO', x, re.IGNORECASE)]
Run Code Online (Sandbox Code Playgroud)
我基本上想要将所有没有任何匹配的元素添加regex_list到另一个列表中.
例如==>
newlist = []
for each in a_list:
for regex in regex_list:
if(regex(each) == None):
newlist.append(each)
Run Code Online (Sandbox Code Playgroud)
如何使用列表推导来完成此操作?它甚至可能吗?
我想创建一堆具有相同属性的表单,并通过指定构造函数的参数来初始化表单构造函数中的属性.
我尝试创建一个继承自form的类,然后让我的所有表单继承自该类,但我认为因为我无法调用InitializeComponent(),所以我遇到了一些问题.
什么是C#代码如何做到这一点?
c# ×4
.net ×2
ab-testing ×1
count ×1
f# ×1
inheritance ×1
java ×1
javascript ×1
linq ×1
list ×1
mysql ×1
nhibernate ×1
performance ×1
python ×1
reflection ×1
sorting ×1
string ×1
sum ×1
svn ×1
windows ×1
winforms ×1