我想以类似于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) 我正在使用.net-4.0中的System.ComponentModel.Composition在Visual Studio 2010 beta 2中首次尝试Managed Extensibility Framework.
我无法使用下面两个替代例程让CompositionContainer找到我的实现程序集.
第一次尝试(这在MEF的较旧的codeplex版本中有效):
var composition = new CompositionBatch();
composition.AddPart(this);
var container = new CompositionContainer(new DirectoryCatalog(AppDomain.CurrentDomain.BaseDirectory));
container.Compose(composition);
Run Code Online (Sandbox Code Playgroud)
第二次尝试(我认为这在beta 1中有效):
var aggregateCatalog = new AggregateCatalog(
new AssemblyCatalog(Assembly.GetExecutingAssembly()),
new DirectoryCatalog(AppDomain.CurrentDomain.BaseDirectory));
var compositionContainer = new CompositionContainer(aggregateCatalog);
compositionContainer.ComposeParts(this);
Run Code Online (Sandbox Code Playgroud)
在测试版2中是否有新的方法可以做到这一点?
编辑:事实证明这与作曲无关.我有一个静态属性代表我导入的实现:
[Import] public static ILog Log { get; set; }
Run Code Online (Sandbox Code Playgroud)
应该是:
[Import] public ILog Log { get; set; }
Run Code Online (Sandbox Code Playgroud)
我将Daniel的答案标记为已被接受,因为以更彻底的方式调试的sage建议解决了这个问题.
我有一个包含多个系列的柱形图,每个系列包含多个点.目前这些列都相互接触.我想强制每列之间的差距.我怎样才能做到这一点?
我发现应用PointWidth(Chart1.Series[seriesName]["PointWidth"] = (0.6).ToString();)会让我在x值组之间分离,而不是在单个组中的每个系列点之间(我需要).使用其他地方建议的空间隔系列并不能解决问题.

我正在使用.Net 4,VS 2010,Web Application.我的图表代码如下:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web.UI;
using System.Web.UI.DataVisualization.Charting;
namespace WebApplication1
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
Chart1.ChartAreas.Add("Default");
Chart1.ChartAreas["Default"].BackColor = Color.White;
Chart1.ChartAreas["Default"].BackSecondaryColor = Color.AliceBlue;
Chart1.ChartAreas["Default"].BackGradientStyle = GradientStyle.TopBottom;
Chart1.BackColor = Color.AliceBlue;
Chart1.BackSecondaryColor = Color.White;
Chart1.BackGradientStyle = GradientStyle.TopBottom;
Chart1.BorderSkin.SkinStyle = BorderSkinStyle.Emboss;
var colors = new List<Color>(GetSystemColors().Where(c=>c.Name.StartsWith("Dark")));
var rng = new Random();
var start = rng.Next(0, colors.Count - 1); …Run Code Online (Sandbox Code Playgroud) 我正在开发一个必须存储非常大的数据集和相关参考数据的项目.我从未遇到过需要这么大的表的项目.我已经证明,至少有一个开发环境不能应对数据库层与复杂查询对应用程序层生成的视图所需的处理(具有多个内部和外部联接的视图,对具有9000万行的表进行分组,求和和求平均值) ).
我测试过的RDBMS是AIX上的DB2.失败的开发环境加载了将在生产中处理的卷的1/20.我确信生产硬件优于dev和staging硬件,但我不相信它会处理大量的数据和查询的复杂性.
在开发环境失败之前,需要花费超过5分钟的时间来返回由大型表格复杂查询(许多连接,大量分组,求和和平均)生成的小数据集(数百行).
我的直觉是数据库架构必须改变,以便视图当前提供的聚合作为非高峰批处理过程的一部分执行.
现在我的问题.声称有这类事情经验的人(我不这样认为)我的担心是没有根据的,我向我保证.是吗?现代RDBMS(SQL Server 2008,Oracle,DB2)能否应对我所描述的数量和复杂性(给定适当数量的硬件),还是我们处于谷歌BigTable等技术领域?
我希望得到那些实际上不得不在非理论层面上使用这种音量的人的答案.
数据的性质是金融交易(日期,金额,地理位置,业务),因此几乎所有数据类型都有代表.所有参考数据都被标准化,因此是多个连接.
可能是一个愚蠢的问题,但我是MVC和jQuery的新手.我想交替我的表格的行颜色,我已经决定我将使用jQuery来做它.我知道我可以写一个扩展方法(http://haacked.com/archive/2008/08/07/aspnetmvc_cycle.aspx)等,但在阅读SH对http://haacked.com/archive上文章的评论之后/2008/05/03/code-based-repeater-for-asp.net-mvc.aspx我选择了jQuery作为我想要实现的解决方案.
我想实现http://www.packtpub.com/article/jquery-table-manipulation-part2中描述的方法,但我还没弄清楚在哪里放置初始jQuery调用(例如:$(document).ready (function(){...});
就像我说的,我是jQuery的新手......
刚从客户端站点的TFS 2008到2010,现在想知道TeamBuildTypes文件夹中的TFSBuild.proj文件发生了什么.我已经有了构建和丢弃工作,现在我需要让旧部署再次运行.我们曾经在TFSBuild.proj中使用AfterBuild目标执行此操作.这种机制似乎已在2010年发生变化或消失.
有人能指出我的文章或描述2010年部署选项的变化吗?
具体来说,我需要支持运行psexec以在远程部署目标上安装和启用Windows服务,并且我需要将一些网站/ Web服务部署到远程IIS节点,作为自动构建的一部分.
编辑:刚刚发现这个:http://blogs.msdn.com/jimlamb/archive/2009/11/03/upgrading-tfs-2008-build-definitions-to-tfs-2010.aspx我不止一点点2008年和2010年之间的重大变化带回来.我将需要有关如何在新的默认构建流程模板机制中部署远程站点和服务的建议.
Silverlight处女在这里.如何使我的网格周围的用户控件自动调整大小以适应内部的网格宽度?目前,当浏览器窗口更宽时,用户控件显示大约300或400像素.它渲染数据网格周围的垂直和水平滚动条,这是丑陋的.我想将控件宽度设置为"100%",但似乎不支持.我错过了什么?
到目前为止,这是我的xaml:
<UserControl x:Class="RichMedia.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data">
<Grid x:Name="LayoutRoot" Background="White">
<data:DataGrid Name="dataGrid1" AutoGenerateColumns="False"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
DataContext="{Binding}" />
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
编辑:我应该补充一点,我在使用Silverlight应用程序添加到现有Web应用程序项目时创建的Visual Studio 2010中使用默认容器.
以下是托管页面的标记:
<%@ Page Language="C#" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
...
<style type="text/css">
html, body { height: 100%; overflow: hidden; }
body { padding: 0; margin: 0; }
html, body { height: 100%; overflow: hidden; }
#silverlightControlHost { height: 100%; text-align:center; }
</style>
<script type="text/javascript" src="Scripts/Silverlight.js"></script>
... …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种更好的方法来完成以下代码块,它是EmailAddress类/对象的一部分.根据我的想法,零件阵列很笨重,我想知道是否没有一个使用元组或Linq的衬垫可以整理一下.
另外,对于电子邮件地址的第一部分,什么是比"别名"更好的属性名称?
public string Alias { get; private set; }
public string Domain { get; private set; }
private void Split(string emailAddress)
{
var parts = emailAddress.Split(new[] { '@' });
Alias = parts[0];
Domain = parts[1];
}
Run Code Online (Sandbox Code Playgroud) 我需要一个辅助方法来将轴标签添加到图表中.我不想在图表中具有值的轴的每个点添加标签,因为这会太忙.所以我需要定期提取样品.到目前为止,我已经提出了满足要求的以下方法,但我认为必须有一种更简洁的方法来实现Linq.任何人都可以想到如何使这更简洁(n代表我想要的样本总数)?
public static List<T> Sample<T>(this List<T> list, int n)
{
var samples = new List<T>();
var divisor = list.Count/n;
for (var i = 0; i < list.Count; i++)
if (samples.Count == i/divisor)
samples.Add(list[i]);
return samples;
}
Run Code Online (Sandbox Code Playgroud) 如果我想将guid表示为一组整数,我将如何处理转换?我正在考虑获取guid的字节数组表示并将其分解为最少可能转换回原始guid的32位整数.代码示例首选...
此外,结果整数数组的长度是多少?
我需要迭代一个程序集列表并确定它们的版本号.我之前使用过System.Reflection.Assembly.GetExecutingAssembly().GetName().版本,但在这种情况下我正在使用尚未加载的程序集.我知道我可以使用System.Reflection.Assembly.ReflectionOnlyLoadFrom("assembly.dll"),但我读过这可以吃内存,除非我在自己的应用程序域中加载程序集然后卸载它们.这是ReflectionOnlyLoadFrom()还是只是LoadFrom()?
或者,是否有一种方法可以在不加载程序集的情况下获取版本信息?
如果我设置它会慢吗?
我已经在我的机器上运行了,我想用TFS 2010设置CI.所以每次我检查代码时都会引发构建.这会使构建过程中的编码过程使我的计算机真的变慢吗?
我只是想在投资建立一个单独的机器之前测试其他所有内容.
c# ×7
.net ×2
algorithm ×2
tfs2010 ×2
.net-4.0 ×1
asp.net-mvc ×1
deployment ×1
guid ×1
ilgenerator ×1
jquery ×1
linq ×1
mef ×1
mschart ×1
opcode ×1
rdbms ×1
reflection ×1
silverlight ×1
sql ×1
sql-server ×1
string ×1
tfsbuild ×1
xaml ×1