当试图在C#中使用代理以功能方式解决问题时,我遇到了一个我想要分享的陷阱.我希望听到你的建议.
背景
我想从一个对象列表中填充一个网格,其中单个列的值是使用委托获得的(想法来自Philip Pipers ObjectListView控件).
另外,我想自动插入包含两个值之间(数值)差异的列.
因此,有特性我的对象FirstValue,SecondValue并且ThirdValue我想和列FirstValue,(SecondValue-FirstValue),SecondValue,(ThirdValue-SecondValue),ThirdValue.
我已经调整了现有的网格控件来在对象列表上使用委托,这部分工作正常.
第一次尝试
首先,我尝试了类似的东西:
class MyGridClass : DelegateGrid
{
DelegateGrid.ValueGetter lastGetter;
public MyGridClass() {
AddMyColumn(delegate(MyObj obj) { return obj.FirstValue; });
AddMyColumn(delegate(MyObj obj) { return obj.SecondValue; });
AddMyColumn(delegate(MyObj obj) { return obj.ThirdValue; });
}
private void AddMyColumn(DelegateGrid.ValueGetter getter) {
if (lastGetter != null)
base.AddColumn(new DelegateColumn(delegate(MyObj obj) {
return getter(obj)-lastGetter(obj);
}));
base.AddColumn(new DelegateColumn(getter));
}
};
Run Code Online (Sandbox Code Playgroud)
问题
在功能性语言,以这种方式计算的差异将很好地工作,因为新的委托(内部构造AddMyColumn …
下面的代码示例在加密/解密操作后没有返回原始文本,我正在尝试找出原因
from Crypto.Cipher import AES
text = """This is plain text
to use.
It should be exqctly 128 characters long to avoid padding and it is split
with new lines as in
file"""
password = "password........"
block = 32
mode = AES.MODE_CBC
enc = AES.new(password, mode)
encrypted = enc.encrypt(text)
print "ORIGINAL: " + text
print "ENCRYPTED: " + str(encrypted)
print "DECRYPTED: " + str(enc.decrypt(encrypted))
Run Code Online (Sandbox Code Playgroud)
谁能告诉为什么文本的第一部分格式不正确?
在Python,什么是最好的数据结构n的比特(这里n为约10000),其上进行通常的二进制运算(&,|,^与其它这样的数据结构)是快?
与EntityFramwork(Code First)建模1-n关系的常用方法是使用虚拟集合属性,如:
class Project {
public virtual ICollection<Remark> Remarks { get; set; }
}
class Remark {
public virtual int ProjectId { get; set; }
public virtual Project Project {get; set; }
}
Run Code Online (Sandbox Code Playgroud)
由于Remarks最初的收集null,我采取以下方法
private ICollection<Remark> _remarks;
public virtual ICollection<Remark> {
get {
if (_remarks == null)
_remarks = new List<Remark>();
return _remark;
}
set {
_remarks = value;
}
}
Run Code Online (Sandbox Code Playgroud)
为了Remarks.Add在新创建的Project对象上使用该方法而无需明确设置Property.
Afaik EF内部派生自我的类并覆盖虚拟导航属性以支持延迟加载.
我的问题:我是否需要定义集合属性的setter?EF需要吗?我更愿意只暴露getter并让类在内部管理集合.
编辑 Accidentially我只是在postin mine之后才注意到这个相关的问题,所以也许它只是重复...
对于科学应用程序,我想设计一个输入表单,让用户输入某些参数.其中一些是使用希腊字母指定的,其中一些是拉丁字母.应使用普通JLabel控件显示参数名称.
在Windows上,Tahoma字体(默认情况下用于标签)包含拉丁字母和希腊字母,所以我只需将标签的Text属性设置为希腊语(unicode)字符串,一切正常.
我想知道这是否也可以在Linux和OSX系统上进行修改.这适用于哪些Java/OS版本.
另外我很好奇是否有一种简单的方法来显示标签中的下标(TeX中的"\ eta_0"),但这对我的应用来说并不重要......
我希望在MonoDevelop/.Net中自动生成单元测试.
我试过NUnit,但它没有生成测试.在eclipse中,插件randoop执行此操作,但它以Java和JUnit为目标.
如何在MonoDevelop和/或.Net中自动生成单元测试?或者也许有一个现有的工具,我不知道......
我需要在我的应用程序中使用进度条.
竞争过程需要两分多钟,但可能因情况而异
我是否可以使用进度条显示应用程序的进度而不知道最大限制和步长值
我有一个GUI,左侧有一个树视图,右侧有一个面板.该面板包含下拉列表,单选按钮,文本框等组件,我需要根据树上选择的节点填充这些组件.
工作正常,直到这里.然而,当我单击面板上的按钮或任何组件时,先前在树中突出显示的节点将失去焦点.我的意思是该节点不再保持突出显示.我想在编辑与树中该节点相关的组件时突出显示该节点.我怎么做?有什么帮助吗?
谢谢.