我在这里遇到了一些麻烦,在我们公司,我们有一个自动DA层,它使用自引用泛型.在Visual Studio 2010中,IDE对此非常满意,但是2012年似乎有困难,即使我们构建时它也成功了.
这是一个例子:

DataObject定义如下:
[TypeDescriptionProvider(typeof(HyperTypeDescriptor.HyperTypeDescriptionProvider))]
public class DataObject<T> :
INotifyPropertyChanged,
IDataErrorInfo,
IEditableObject,
IDataObject
where T :
DataObject<T>,
new()
Run Code Online (Sandbox Code Playgroud)
我意识到这不是最简单的定义,而是它的合法性,它构建得非常好.
然而,这个"问题"导致智能感知失败,以及"转到定义"功能,不用说这是令人沮丧的.
我已经尝试删除并重新添加引用,但问题仍然存在.
VS2010非常高兴,而且我已经回归使用,VS2012非常好用并且反应灵敏,但如果这个问题仍然存在,那就是它的破坏.
有人有任何想法吗?
想要明确一些事情,这个问题是间歇性的(这是一个痛苦,因为它很难跟踪根本原因).
它打破了intellisense并在任何地方"去定义",而不仅仅是因为有错误的类.
我将构建一个提交连接的示例解决方案,但最近时间不在我身边.
快速问题,是否可以将组合框绑定到对象列表,但是将selectedvalue属性指向对象,而不是对象的属性.
我只是问,因为我们有一些Business Objects引用了其他对象 - 比如'Year'对象.那年的对象可能需要换掉另一年的对象.
我能想到的唯一解决方案是让另一个类具有单个属性,在这种情况下指向年份对象.然后将组合框绑定到这些的列表,并将显示和值成员设置为单个属性.
但是,对于任何"查找",我们这样做似乎有点痛苦?
马龙
如果为mvc安装nuget Ninject包,它会将NinjectWebCommon.cs文件放在App_Start文件夹中.
除了这一行,我理解这个文件中99%的内容:
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
Run Code Online (Sandbox Code Playgroud)
GitHub上的完整代码文件
在我看来,最好使用:
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => bootstrapper.Kernel);
Run Code Online (Sandbox Code Playgroud)
由于静态实例已经定义在文件的顶部,因此它将获得具有所有映射的内核.
经过一些谷歌搜索似乎这也很常见:
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => ctx.Kernel);
Run Code Online (Sandbox Code Playgroud)
样板代码的方式背后的原因是什么?
我正在努力将基于Access的系统重新开发到c#.net,但是当MS从办公室2003到办公室2007时,他们删除了访问中的图片编辑器 - 这意味着以前存储的图片将不再显示在系统中.该公司的人做了一个黑客,基本上使用excel在后台保存了VBA图像(如果你需要它我可以获得更多信息)但基本上它意味着仍然可以使用访问图像控件(对象绑定帧).
但是,我现在遇到了尝试在.NET应用程序中显示这些问题的问题,并且经过无数天尝试操作字节数组的不同方法后,我接近放弃了.我尝试了至少8个不同的建议解决方案,每个解决方案在执行Image.fromStream()时以"参数未识别"异常结束.下面是迄今为止让我最接近的代码:
private void imageExtractTest()
{
LogOnDataSetTableAdapters.QueriesTableAdapter qa =
new LogOnDataSetTableAdapters.QueriesTableAdapter();
object docO = qa.GetLogonImage();
if (docO == null || !(docO is byte[]))
{
return;
}
byte[] doc = (byte[])docO;
MemoryStream ms = new MemoryStream();
ms.Write(doc, 0, doc.Length);
int firstByte;
int secondByte;
ms.Seek(0, SeekOrigin.Begin);
firstByte = ms.ReadByte();
secondByte = ms.ReadByte();
if (firstByte != 0x15 && secondByte != 0x1C)
{
//ErrorResponse("Stored object is not an Access File.");
return;
}
int fileTypeLoc = 20; // begin of the file type …Run Code Online (Sandbox Code Playgroud) 我搜索谷歌并在这里寻找答案,我的问题与下面的问题有些相关,但又不同以保证一个新的问题.
基本上,我有一个绑定到ObservableCollection类的WPF组合框.如果我需要对其进行一些更改,此类具有延迟收集更改通知的额外功能,例如清除并重新填充它以获取数据库的新快照.
我的组合框绑定同时设置了DisplayMemberPath和SelectedValuePath.SelectedValuePath解析为整数属性.
问题与引用的问题相同,当我刷新绑定集合中的值时,绑定的ComboBox会丢失其选择,并变为空白(SelectedIndex = -1).
我可以确认,在重新填充集合并将项目放回其中之前,CollectionChanged事件不会被触发.
更令人费解的是,如果我做以下事情:
using (_collection.DelayNotifications())
{
var items = _collection.ToArray();
_collection.Clear();
_collection.AddRange(items);
}
Run Code Online (Sandbox Code Playgroud)
该组合框并没有失去其选定的值.
这表明如果集合中的项目被从数据库中检索的新项目替换它会中断 - 如果我没有使用SelectedValuePath绑定,我可以接受这个,但是因为我是,并且因为整数值是相同的,所以肯定我在做什么应该工作?
我正在使用.NET 3.5 SP1
有人有任何想法吗?
编辑
从下面的评论和Blam的回答.我确实接受这就是为什么这样做的原因.但它并没有真正帮助我.
我将Combobox的SelectedValue属性绑定到我的视图模型上的Integer属性.如果我要绑定SelectedItem,我需要在我的视图模型上绑定到该对象类型的属性 - 但它是我实际上正在执行的整数属性.
目前我通过强制属性'SelectedValue'的属性更改事件来"修复"(阅读次要黑客)问题.这似乎使Combobox重新检查其内部列表,找到与定义的SelectedValuePath匹配的项目.
WPF组合框必须"知道"它具有一个SelectedValuePath值集,因此我认为它没有太大的飞跃,可以假设它会调整其项匹配逻辑.然而,这超出了SO的范围.
我意识到我可能只是接受这就是WPF的工作原理,但是在WinForms中使用数据绑定的组合框架打了几年后,我有点希望我不必使用WPF :) - 尽管说WPF组合框比WinForm组合要好得多.
在google上花了3到4个小时试图找到解决问题的方法后,我运气不好.
基本上,我们使用sql server后端为我们的.NET应用程序使用Crystal报表,我们有许多客户端都有自己的服务器,所以我们的报表需要动态设置它们的连接.直到一周前,这个工作正常.但是几天前,客户报告他们正在获取报告的数据库登录提示(只有一个报告,其余的工作正常).我们很难过,但我们设法在没有安装visual studio或sql server的上网本上重现它.最后,开发人员决定重现该报告,希望在该特定报告中这只是一个奇怪的问题.
不幸的是,今天的新客户也遇到了同样的问题,但是这次他们每次都有水晶报告 - 而且他们也在上网本上工作过,所以我们真的很丢失.
以下是我们的客户提供的屏幕截图 -
截图http://img404.imageshack.us/img404/1375/loginf.png
这是我用来在报告中设置连接信息的代码
cI.ServerName = (string)builder["Data Source"];
cI.DatabaseName = (string)builder["Initial Catalog"];
cI.UserID = (string)builder["User ID"];
cI.Password = (string)builder["Password"];
foreach (IConnectionInfo info in cryRpt.DataSourceConnections)
{
info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password);
}
foreach (ReportDocument sub in cryRpt.Subreports)
{
foreach (IConnectionInfo info in sub.DataSourceConnections)
{
info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password);
}
}
Run Code Online (Sandbox Code Playgroud)
一如既往,任何帮助非常感谢.
我设计了一个具有各种插件的应用程序,通过使用MEF框架来延迟加载应用程序目录中插件接口的任何实现 - 非常标准的东西.
但是,我已经开发了一个插件,它依赖于来自不同应用程序的某些DLL(将它们安装到GAC中) - 在安装了这些应用程序的计算机上,应用程序运行正常,但是在我的整个应用程序不能满足的计算机上运行.
我已经做了一些关于运行时何时搜索DLL的研究,显然它是为它遇到的每个方法做的.然后我尝试修改插件以确定在继续输入需要它们的方法之前是否所需的DLL在GAC内部,但是这导致了相同的跌倒.
然后我注释掉了类中的所有代码,除了一个简单的构造函数和一些接口存根,看看它是否会起作用,但它会导致相同的错误..net运行时是否尝试立即加载任何GAC程序集?
有没有人有这种情况的经验?我有什么选择?
谢谢
马龙
我阅读了以下有关VS2013中新的xaml编辑功能的博文:
数据绑定智能感知是我多年来一直想要的东西,所以我试了一下 - 但遗憾的是它在错误列表中返回了一个错误(虽然它仍然很好).
这是我添加到UserControl声明/标签中的内容:
d:DataContext="{d:DesignInstance Type=lTemplates:TemplateEditorCustomVM}"
Run Code Online (Sandbox Code Playgroud)
这是列表中的错误:
错误95访问被拒绝:
System.Collections.ObjectModel.ObservableCollection'1[_.di1.TemplateEditorCustomVM+TemplateCriteriaVM]'.
我不完全确定它正在尝试做什么,这两个类都被声明为public(主视图模型和嵌套类).
有人有任何想法吗?
如果不是,它不是世界末日,因为资源密钥智能感知似乎工作,这仍然是一个巨大的奖金.
编辑
好的 - 我将嵌套的类移到公共名称空间中,VS给了我一个更详细的错误:
错误64
Attempt by method '_.di1.Templates.TemplateEditorCustomVM..ctor()' to access method 'System.ComponentModel.BindingList'1<System.__Canon>..ctor()'失败.
我必须说:我有点困惑:
首先,为什么intellisense需要实例化VM类,它应该关心的是什么属性可用以及它们是什么类型 - 所有这些都可以通过反射来检索.
其次,我不明白为什么它在应用程序启动时运行良好时出错.
我可能不得不做一个让视觉工作室调试本身运行设计师的老技巧,看看它正在尝试做什么......
进一步编辑
是的,我将BindingList属性更改为直接的List属性(因为BindingList来自WinForms方面,所以我认为这可能值得改变以查看它的作用).但我得到了一个类似的错误:
错误64
Attempt by method '_.di3.Templates.TemplateEditorCustomVM..ctor()' to access method 'System.Collections.Generic.List'1<System.__Canon>..ctor()' failed.
我在System .__ Canon上做了一个快速谷歌,它只是一个优化细节:
虽然仍然没有接近发生什么事情,但是我会继续深入挖掘.
编辑 - 现在有一个回购
是的,我开始评论VM的大块以试图从好奇心中找到底层 - 我现在有一个VM类似乎重现了这个问题:
public class Nested
{
public class TestCheck
{
public int One { get; set; }
public int Two { get; set; }
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试让我的自定义绑定与 observable 和普通对象一起使用。我按照这个问题的答案:
但是,如果我查看执行 allBindingsAccessor 时返回的对象,则属性 '_ko_property_writers' 未定义。
有谁知道这在淘汰赛的第 3 版中是否发生了变化?
编辑
对不起,我应该说,我试图以一种可观察的不可知方式将值“写”回模型
我想使用 Jasmine 或 Mocha 等测试框架。然而,这样做意味着通过 npm 添加他们的 @types 库,不幸的是这些会污染全局命名空间。
这意味着在编写应用程序代码时,intelisense 包含测试功能,当然这是有史以来最第一的世界问题,但对我来说仍然很烦人。
我希望我可以在每个*.spec.ts文件的顶部导入库,但定义文件似乎不支持模块。
我发现了另一个Tape使用模块导出的库,但它是相当基本的,并且没有用于测试的浏览器 UI(它们出现在浏览器控制台中)。
有没有人有任何建议?
c# ×7
.net ×5
combobox ×2
data-binding ×2
javascript ×2
wpf ×2
.net-3.5 ×1
asp.net-mvc ×1
gac ×1
generics ×1
intellisense ×1
jasmine ×1
knockout.js ×1
mef ×1
mocha.js ×1
ms-access ×1
ninject ×1
ole ×1
plugins ×1
reporting ×1
typescript ×1
unit-testing ×1
winforms ×1
xaml ×1