如何使WPF数据绑定重构安全?

所以我正在完成我的第一个WPF项目,我喜欢到目前为止看到的内容。 学习曲线比我预期的要多,但WPF非常酷。 但是,我正在努力解决数据绑定概念。 我遇到的一个具体问题是如何使我的数据绑定声明重构安全? 考虑这个例子。 public class MyDataObject { public string FooProperty { get; set; } } void Bind() { var gridView = myListView.View as GridView; gridView.Columns.Clear(); gridView.Columns.Add( new GridViewColumn() { Header = “FooHeader”, DisplayMember = new Binding(“FooProperty”) } ); List source = GetData(); myListView.ItemsSource = source; } 那么如果我将数据对象上的FooProperty重命名为其他内容呢? 数据绑定将无效,我不会收到编译错误,因为绑定是通过文本声明的。 有没有办法使绑定更安全一点?

如何获取堆栈帧的执行对象?

使用reflection时,可以使用System.Diagnostics.StackTrace获取调用堆栈(除了它可以是由JIT优化引起的粗略近似)并检查包含的StackFrame对象。 如何获取对堆栈帧中的方法正在执行的对象(this-pointer)的引用? 我知道我可以通过在堆栈框架对象上调用GetMethod()来获取MethodBase,但我正在寻找的东西是GetObject()(如果方法是静态的话,它会自然地返回null)。 看起来堆栈帧对象只能查询静态确定的信息,例如方法信息,原始文件等。 VS调试器知道(尽管它可能使用另一种获取调用堆栈跟踪的方法),因为可以双击调用堆栈窗口中的任何堆栈帧并查看本地和类字段的值。 编辑:澄清:我想要调用该方法的对象实例 。 即:如果在调用堆栈的某个地方的对象实例A上调用方法Foo(),并且它级联到我执行堆栈跟踪的方法,我想从我执行堆栈跟踪的位置获取对A的引用。 (不是方法库的声明类型)

你如何使用Linq到ADO.NETentity framework进行全文搜索(FTS)?

现在SQL Server 2008内置了全文搜索。我希望用它来支持我网站的搜索。 我也在考虑为我的ORM使用ADO.NETentity framework,但我想知道如何使用Linq到ADO.NETentity framework进行全文搜索(FTS)? 在ADO.NETentity framework中是否有任何支持,或者我是否坚持使用创建使用全文搜索谓词的函数的方法 ?

C#中Process和ProcessStartInfo有什么区别?

Process和ProcessStartInfo什么区别? 我已经用它们来启动外部程序,但必须有两种方法可以做到这一点。 这是两个例子。 Process notePad = new Process(); notePad.StartInfo.FileName = “notepad.exe”; notePad.StartInfo.Arguments = “ProcessStart.cs”; notePad.Start(); 和 ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = “notepad.exe”; startInfo.Arguments = “ProcessStart.cs”; Process.Start(startInfo);

如何同时异步进行多次ping操作?

我似乎无法理解如何构建对SendPingAsync的异步调用。 我想循环遍历一个IP地址列表,并在继续执行程序之前异步ping它们…现在需要一次一个地遍历所有这些地址。 我之前问了一个关于它的问题,我认为我能够找出异步,但显然我错了。 private void button1_Click(object sender, EventArgs e) { this.PingLoop(); MessageBox.Show(“hi”); //for testing } public async void PingLoop() { Task longRunningTask = PingAsync(); int result = await longRunningTask; MessageBox.Show(“async call is finished!”); //eventually want to loop here but for now just want to understand how this works } private async Task PingAsync() { Ping […]

错误:无法加载log4net程序集

我想解决这个错误: 无法加载文件或程序集’log4net,Version = 1.2.10.0,Culture = neutral,PublicKeyToken = 692fbea5521e1304’或其依赖项之一。 系统找不到指定的文件。“此错误位于web.config文件中。 当我将log4net.dll复制到我的webapp的bin目录时,我得到了一个 无法加载文件或程序集’log4net,Version = 1.2.10.0,Culture = neutral,PublicKeyToken = 692fbea5521e1304’或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 web.config文件中也会发生此错误。 更改版本和公钥令牌以匹配文件非常容易,以便正确加载程序集。 当我这样做时,我的网站运行完美,除了reportViewer对象。 然后它会在reportViewer标记处抛出原始错误,而不是web.config。 我的假设是,如果我安装了所请求的log4net.dll版本,我的问题就会得到解决。 但我不知道它是哪个文件,或者在哪里找到它。 我通过下载log4net 1.2.10并尝试下载中的每个dll来检查显而易见的事。 我应该提一下,该网站在我的开发机器上运行没有问题,但在发布到我的服务器时却没有。 我在Server 2008 R2操作系统上运行asp.net网站,.NET 4.0,IIS 7。 我已经为64位安装了Crystal Reports 13.0.1(我的机器是64位)。 我该如何解决这个问题? 编辑:为了回应@Kwvian的回答,我已经对我的web.config文件进行了更改。 我仍然得到清单定义与程序集引用不匹配的错误。 抛出此错误的代码是: Line 33:

LINQ Group连续时间

假设我有一个看起来像这样的简单结构: public class Range { public DateTime Start { get; set; } public DateTime End { get; set; } public Range(DateTime start, DateTime end) { this.Start = start; this.End = end; } } 我创建了一个像这样的集合: var dr1 = new Range(new DateTime(2011, 11, 1, 12, 0, 0), new DateTime(2011, 11, 1, 13, 0, 0)); var dr2 = […]

如何使用.NET HttpWebRequest API从响应中读取HTTP头?

我的应用目前使用OAuth与Twitter API进行通信。 早在去年12月,Twitter就将OAuth的费率上限提高到每小时350个请求。 但是,我没有看到这一点。 我仍然从account / rate_limit_status方法获得150。 有人告诉我,我需要使用X-RateLimit-Limit HTTP标头来获得新的速率限制。 但是,在我的代码中,我没有看到标题。 这是我的代码…… HttpWebRequest request = (HttpWebRequest)WebRequest.Create(newURL); request.Method = “GET”; request.ServicePoint.Expect100Continue = false; request.ContentType = “application/x-www-form-urlencoded”; using (WebResponse response = request.GetResponse()) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { responseString = reader.ReadToEnd(); } } 如果我检查response ,我可以看到它有一个Headers的属性,并且有16个头。 但是,我没有列表中的X-RateLimit-Limit 。 图片http://sofzh.miximages.com/c%23/33201085434am.png 知道我做错了什么吗?

在100毫秒内查看大型多页Tif图像

我正在使用WinForms。 在我的表单中,我有一个pictureBox (设置为normal mode ),下一个和上一个按钮。 我想快速resize和加载多页TIF图像。 当我转到多页TIF图像的下一页时,每次将图像绘制到pictureBox都会遇到延迟。 图像的平均速度大约需要800毫秒。 我希望页面在100毫秒内加载。 我希望像IrfanView一样快速处理大型TIF图像 。 IrfanView是一个小型图像查看应用程序。 如果您下载IrfanView,您可以看到性能有多快。 目前我有另一个解决方案,我使用multithreading后台工作程序将TIF页面加载到一个数组然后我缩小它。 这种方法最初需要一些时间,但这里的目标是不必等待。 有没有办法在.NET中改进大图像的Graphics.DrawImage性能? g.DrawImage(img,0,0,width,height); //此行导致延迟“800毫秒,具体取决于您的计算机” 我使用的TIF图像的大小:宽度= 16800,高度= 10800 只有黑白Tif图像 位深度= 1 分辨率单位= 2 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Tif_Preformance_Question { public partial class Form1 : Form […]

c#DbSet – 无法获取内部对象

我需要将实体切换到内部。 所以我创造了它。 没有构建/运行时错误。 但是当我想使用DbSet对象时我不能,因为对象似乎没有初始化! 我的ContextEntities: public partial class Entities { internal DbSet EmployeeSet { get; set; } } 我这样用: Entities context = new Entities(); List employees = context.EmployeeSet.ToList(); 但“EmployeeSet”为空。 我认为这是因为它没有在get中实例化。 如果我像这样使用public,它可以工作: public partial class Entities { public DbSet EmployeeSet { get; set; } } 问题:如果DbSet标记为内部,它可以工作吗? 如果是这样的话? 为什么会破坏它? (谢谢Scott Stafford)