我有以下问题。我有MSVS解决方案,里面有三个项目。
[TypeConverter(typeof(BooleanYesNoConverter))]
从第一个和第三个开始引用第二个项目。
当我们在调试模式下启动第一个项目(在VS Experimental hive中)并单击菜单时,插件会加载从第三个项目生成的程序集(在Assembly.LoadFrom的帮助下)并实例化我们的类(具有一个公共布尔属性)。然后它将此实例传递给propertyGrid.SelectedObject属性。属性网格显示公共属性,而是是/否在右侧显示True / False。
我在转换器的方法(和构造函数)中放置了断点,但似乎我们没有去那里。而不是自定义类型转换器,使用标准。
更有趣的是,如果我在第三个项目中放置BooleanYesNoConverter类(因此它将是我的类的一个程序集)属性网格显示正确的是/否变体。
提前感谢您的帮助!
答案 0 :(得分:0)
上网冲浪我发现不仅我遇到了这样的问题。我在以下地方发现了类似的问题:
http://social.msdn.microsoft.com/Forums/en/vsx/thread/a04b45d2-1d0a-4cfc-a0f0-1d458b2d6e26
(您可以在我的评论中找到另一个链接)
我找到了适合(对我而言)的决定:我写了装配解析器。换句话说,我在插件的初始化方法中添加了以下代码:
AppDomain.CurrentDomain.AssemblyResolve +=
new ResolveEventHandler(LoadAssembly);
这个插件类的方法:
private Assembly LoadAssembly(object sender, ResolveEventArgs e)
{
int commaIndex = e.Name.IndexOf(',');
string fileName = e.Name.Substring(0, commaIndex) + ".dll";
Assembly assembly = Assembly.LoadFrom(fileName);
return assembly;
}
现在工作正常。