我想以类似于CodeProject上的DynamicBuilder的方式填充对象的属性而不使用反射.CodeProject示例是为使用DataReader或DataRecord填充实体而定制的.我在几个DAL中使用它以达到很好的效果.现在我想修改它以使用字典或其他数据不可知对象,以便我可以在非DAL代码中使用它 - 我目前使用反射.我对OpCodes和IL几乎一无所知.我只知道它运作良好,比反射更快.
我试图修改CodeProject示例,由于我对IL的无知,我已经陷入两行.
我也愿意采用替代/更好的方法来遮盖这只猫.
这是迄今为止的代码(注释掉的行是我坚持的行):
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Reflection.Emit;
public class Populator<T>
{
private delegate T Load(Dictionary<string, object> properties);
private Load _handler;
private Populator() { }
public T Build(Dictionary<string, object> properties)
{
return _handler(properties);
}
public static Populator<T> CreateBuilder(Dictionary<string, object> properties)
{
//private static readonly MethodInfo getValueMethod = typeof(IDataRecord).GetMethod("get_Item", new [] { typeof(int) });
//private static readonly MethodInfo isDBNullMethod = typeof(IDataRecord).GetMethod("IsDBNull", new [] { typeof(int) });
Populator<T> dynamicBuilder = …Run Code Online (Sandbox Code Playgroud) ChildWindow是一个模态窗口,但它不会阻塞.有没有办法让它阻止?我基本上想要一个ShowDialog()方法,它将调用ChildWindow.Show(),但在用户关闭ChildWindow之前不会返回.我尝试使用Monitor.Enter()来阻止ChildWindow.Show(),但是ChildWindow从未呈现过,浏览器只是挂起.有人有主意吗?
如何在不使用Data :: Compare的情况下比较Perl中的两个哈希值?
我是CruiseControl.net的新手,我正在尝试为我正在进行的项目设置它.该项目保持颠覆,但整个项目由核心项目和几个组件组成,每个组件都有一个单独的subversion项目,每个组件都有一个主干,可能的分支和标签.我需要设置cruisecontrol.net,以便主核心项目subversion文件夹以及任何包含的组件的更改触发构建.显然,如果提交包含提交给多个组件的文件,我仍然只需要一个构建.可能吗?
我UITableView在每个单元格中都有自定义背景图像.底部单元格具有更高的图像,其余部分,因为它包含阴影.这意味着我必须将一个部分中最后一个单元格的高度扩展到比正常高.
当我这样做时,它们的内容UITableViewCell就像它们停留在细胞底部而不是中间(因为视觉细胞比实际细胞短).有没有办法让我可以从顶部而不是中心定位我的内容,而UITableViewCell当单元格成为底部单元格时(由于删除或其他),不能调整大小?
将标签上的自动调整遮罩设置为具有静态顶部边界不起作用,也不关闭autoresizesSubviews单元格.
我还想过简单地将所有单元格设置为相同高度并关闭clipsToBounds背景图像,除了背景图像是水平和垂直的可伸缩图像,并且需要能够根据单元格内容的高度调整大小.
任何其他不涉及hackish方法的想法?
是否可以使用Qt 4.4创建自定义停靠区。我知道这是可能的Qt中3,因为这文件建议。摘录自文档“ ...如果需要创建自己的停靠区,我们建议您创建QWidget的子类并将Q3DockAreas添加到子类中。”。但是,在我看来,在Qt 4中Q3DockArea已被删除,现在QMainWindow本身具有停靠区。我基本上想拥有自己的停靠区小部件,可以将其停靠到其中。该停靠区小部件可以在应用程序中的任何位置。关于如何执行此操作的任何想法?
我想为我的WordPress博客提供一个好的语法高亮显示器.我有哪些选择?我经常看到一个具有良好颜色的语法突出显示和复制到剪贴板的选项.有谁知道这是什么工具?
我已经实现类似于在所描述的一个的选择图案此篇使用视图模型来存储IsSelected值,并通过结合所述ListViewItem.IsSelected的视图模型IsSelected:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
</Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)
它一般工作,但我遇到了严重的问题.通过VirtualizingStackPanel在列表视图中使用a 作为面板,仅ListViewItem创建了可见的.如果我使用"Ctrl + A"选择所有项目,或者使用第一项上的"Shift + Ctrl + End"快捷键组合,则会选择所有项目,但对于不可见项目,ViewModel不会获取其IsSelected设为true.这是合乎逻辑的,因为如果ListViewItem没有创建,绑定就无法工作.
任何人都遇到了同样的问题,并找到了解决方案(除了不使用a VirtualizingStackPanel)?
是否可以使用LaTeX/TeX以EPUB格式为电子书阅读器创建文档?可以使用哪个扩展程序或程序?
我有几百行代码,如下所示:
if (c.SomeValue == null || c.SomeProperty.Status != 'Y')
{
btnRecordCall.Enabled = false;
}
if (c.SomeValue == null || (c.SomeProperty.Status != 'Y' &&
c.SomeOtherPropertyAction != 'Y'))
{
btnAddAction.Enabled = false;
}
if (c.SomeValue == null || c.SomeProperty.Processing != 'Y')
{
btnProcesss.Enabled = false;
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能正确地重构这个?我看到每次调用检查'c.SomeValue == null',但它包含在其他条件中.我怎么可能消除这个重复的代码?
c# ×2
blogs ×1
cocoa-touch ×1
dockable ×1
epub ×1
hash ×1
ilgenerator ×1
iphone ×1
latex ×1
listview ×1
msbuild ×1
mvvm ×1
opcode ×1
perl ×1
qt ×1
refactoring ×1
silverlight ×1
stackpanel ×1
svn ×1
tex ×1
uitableview ×1
wordpress ×1
wpf ×1