如何在Unity中使用相同的实例注册两个不同的接口...目前我正在使用
        _container.RegisterType<EventService, EventService>(new ContainerControlledLifetimeManager());
        _container.RegisterInstance<IEventService>(_container.Resolve<EventService>());
        _container.RegisterInstance<IEventServiceInformation>(_container.Resolve<EventService>());
哪个有效,但看起来不太好..
所以,我认为你明白了.EventService实现了两个接口,如果我解析接口,我想要对同一个对象的引用.
克里斯
我觉得我很蠢.我现在搜索了15分钟,发现了几种不同的数据网格滚动解决方案,但似乎没有一个对我有用.
我正在使用WPF与.NET 3.5和WPF Toolkit DataGrid.当我的可观察集合发生变化时,我的网格会更新,完美运行.现在,我的DataGrid位于普通网格内,如果DataGrid太大,则会出现滚动条.还好......
现在来了1.000.000美元的问题:
如何让datagrid滚动到最后一行?有:
有任何想法吗?我觉得自己真的很蠢,这个问题太难了似乎很奇怪.我错过了什么?
是否有任何"最佳实践"方法来替换默认模板的一部分.当前的用例是树视图.默认情况下,树视图具有这种小三角形形状以展开和折叠.
如果我替换整个控件模板,我知道如何替换它们,如下面的代码所示.我不确定是否有办法"保持所有默认值,只需更改XY".它不是一种风格,我基本上需要替换现有控件模板的一部分.
为了说明,请查看以下XAML.第一个较小的块是我希望能够适应的相关XAML.
较大的第二和第三部分基本上是默认模板的副本,仅用于从头开始管理"已更改"部分.
有没有更好的方法来做到这一点,在下半场节省长而混乱的XAML?
        <ResourceDictionary 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
  <Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">
    <Setter Property="Focusable" Value="False"/>
     <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="ToggleButton">
          <Grid
            Width="15"
            Height="13"
            Background="Transparent">
            <Path x:Name="ExpandPath"
              HorizontalAlignment="Left" 
              VerticalAlignment="Center" 
              Margin="1,1,1,1"
              Fill="Black"
              Data="M 4 0 L 8 4 L 4 8 Z"/>
          </Grid>
          <ControlTemplate.Triggers>
            <Trigger Property="IsChecked"
                 Value="True">
              <Setter Property="Data"
                  TargetName="ExpandPath"
                  Value="M 0 4 L 8 4 L 4 8 Z"/>
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
<Setter Property="Template">
  <Setter.Value>
    <ControlTemplate TargetType="{x:Type TreeViewItem}">
      <Grid>
        <Grid.ColumnDefinitions>
          <ColumnDefinition MinWidth="19"
                    Width="Auto"/>
          <ColumnDefinition Width="Auto"/>
          <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions> …我正在寻找任何方式来导航IntelliJ中的错误.
我知道如何跳过INSIDE一个文件.我发现了一堆宏,编辑器扩展等插件来扩展功能,但似乎没有什么可以帮助我在这些场景中:
我从baseclass中删除方法.
我点击了重建,很好,现在有20个文件按预期出错.
现在,我必须手动单击make信息中的红色错误以打开文件,或者手动单击项目树中的文件(标记为红色)以打开错误文件.一旦进入文件很容易,F2,一些ALT + ENTER,修复.
所以任何方式跳转到NEXT ERROR FILE.
或者通过键盘在(非打开)文件之间导航的任何方式.例如,在树形结构中打开下一个文件等.
我对IntelliJ缓存文件或构建的方式有一个小问题(这里不确定术语).
情况摘要:
图书馆模块
应用模块
假设库图像是黑白的,App是彩色的.
该应用程序显示(正确)丰富多彩的A. 
该应用程序显示(正确)黑色和白色B(意味着它缺少).
现在我将图像添加到App项目,Drawable B,颜色.  
澄清一下,这个问题非常特别.只有在App模块中不存在DrawableB时才会出现这种情况.如果您拥有它,但是错误的,并且您更新它,它可以工作.我假设它是IntelliJ的内部缓存,他不承认我添加了一个drawable(他现在必须从App使用它,而不是LIB).也许是谷歌构建的Android项目中的东西,关于内部的信息不够......
我知道,明显的提示是"重建整个项目" - 也就是说,我有18个App模块,每个模块用于一个App.重建需要永远(在我们的一台没有SSD的机器上),而且不是必需的.如果我在AppX中更改某些内容,我只需要重建AppX和库.但似乎没有选择.
有没有人知道一种解决方法,比如通过脚本删除BIN或其他缓存文件夹?不能在不同的"项目"中拆分模块,会失去重构能力.
Crosspost在这里,检查之前浪费时间回答(这里的网站更频繁,更快,但这个问题是如此具体,不能再向开发人员询问)
http://devnet.jetbrains.net/message/5446674
我刚开始使用C#并且非常喜欢它.
我和VS 2008合作并且非常喜欢它.
我试过Resharper而且喜欢它.
现在我从VS2008中的Macros开始,以提高我的编码速度.并且偶然发现了视觉基础.我不喜欢那样.
有没有办法在C#中编写宏.或者解决方法,为VS编写插件以达到相同的目标.让我强调一下,这是一个生产力问题.我只是想自动化我经常使用的一些功能(创建宏,分配快捷方式,告诉我的触摸屏应用程序发送此快捷方式)...
因此,从专家的角度来看,是否有一种简单的方法可以"解决解决方案资源管理器中的所有项目,但是从字母A开始扩展所有项目"(只是一个愚蠢的例子)而不使用visual basic?
谢谢你的任何提示,克里斯
PS:我对录制和播放感到非常满意.但是,事实证明,一些"外部"resharper命令(比如全部崩溃)不能很好地处理宏(得到奇怪的com错误).所以我想,嘿,一个可以折叠所有物品的循环,我可以做到.但遗憾的是在VB中并不是很快:-)
好,
这是一个更普遍的"角落里丑陋的生物"问题.我打算开始一个关于WCF和PRISM的项目.有一段时间我一直在玩PRISM,并且必须说,我喜欢它.具有良好发展可能性的应用的坚实基础.
现在我想要合并WCF并构建一个分布式应用程序,其中一个部分在服务器上,两个在客户端上.根据情况,它可能是相同的机器,也可能不是.
我现在的想法是从PRISM中获取事件概念并使用WCF和回调"通过线路"扩展它,如此处所述的WCF AlarmClock回调示例.
我创建了一张小图片来说明这个想法(主要是针对我),也许这会使事情变得更加清晰:

灰色箭头代表"使用lib".WCF-Event-Base意味着正常的PRISM事件,其中发布方法被称为"通过线路".
有几个问题浮现在脑海中:
关于第二个问题,我目前考虑使用字符串(我想要提出的具体事件的类型)和有效负载作为参数来提升事件.像public void RaiseEvent(string eventType, object eventPayload){}有效载荷这样的东西需要可序列化,也许我甚至包括一个hashcheck.(意思是如果我举起例如一个带有图片作为参数的事件10次,我只转移图片一次,之后使用哈希让服务器在发布时使用缓冲区)...
好的,我想你明白了.这个"东西"应该像一个巨大的单一应用程序,使用一种WCF_EventAggregator而不是普通的PRISM IEventAggregato r.(哇,写作的时候,我只是想"简单地"扩展IEventAggregator,不得不考虑这个)...
为什么我这样写?好吧,主要是反馈,并对我的想法进行排序.所以评论欢迎,或许我应该"小心"的任何事情?
克里斯
[EDITS]
应该有一个未定义的客户端数量,服务器不应该知道客户端.服务器本身可以是自身的客户端,在源代码的其他部分引发强类型的PRISM事件.
"客户端"和"服务器"之间的主要区别是WCF_PRISM连接器的实际实现,请参阅下一章......
在PRISM中,要提出简单事件,您甚至不需要引用服务接口.IEventAggregator可以通过依赖注入获得,提供所需事件的实例(例如WeatherChangedEvent).只需调用eventInstance.Publish(23)就可以引发此事件,因为事件实现为public class WeatherChangedEvent : CompositePresentationEvent<int>
提升事件就像订阅事件一样简单.每个模块都可以使用相同的技术来获取事件,获取引用并使用Subscribe附加到此事件.
现在这里应该发生"魔术".客户端将包括一个棱镜模块,负责将PRISM事件连接到"wcf消息发送".它基本上将属于解决方案中的所有可用事件(它们都在基础结构模块中定义)并在发生事件时发送WCF消息.
SERVER和CLIENT之间的区别在于该模块的实现.由于两件事,需要略有不同.
事件流程将是(示例)
显而易见的是阻止循环.如果服务器将在所有客户端中引发事件,则客户端将回调服务器,再次引发事件,依此类推......因此,本地引发的事件之间需要存在差异(这意味着我必须发送它到服务器)和"服务器引起的事件",这意味着我不必将其发送到服务器.
此外,如果客户端本身已启动事件,则不需要服务器调用它,因为事件已经被引发(在客户端本身,第2点).
所有这些特殊行为都将封装在WCF事件提升器模块中,从应用程序的其余部分看不到.我必须考虑"如何知道事件是否已经发布",也许GUID或类似的东西是个好主意.
现在是第二个大问题,我早些时候在讲述"字符串"时的目的是什么.每次添加事件时,我都不想编写新的服务接口定义.PRISM中的大多数事件都由一行定义,特别是在开发过程中我不希望每次添加事件时都更新WCF_Event_Raising_Module.
我想在调用WCF时直接发送事件,例如使用带有以下签名的函数:
public void RaiseEvent(EventBase e, object[] args)
问题是,我真的不知道我是否可以轻松地序列化PRISM事件.它们都来自EventBase,但我必须检查一下......出于这个原因,我有想法使用类型(作为字符串),因为我知道服务器共享基础结构模块并且可以获得自己的事件实例(无需通过电线发送,只需arg)
到目前为止,我将继续提出问题以获得更多反馈.我刚刚得到的主要新"洞察力":必须考虑递归/ infite循环问题.
顺便说一句.如果有人对所有这些事件的谈话感到困惑,请试试PRISM.你会喜欢它,即使你只使用DI和事件(RegionManager,例如不是我最喜欢的)
克里斯
[结束编辑1]
我试图纯粹通过代码配置Log4Net,但是当我使用最小配置时,我被NHibernate和流畅的界面记录消息所淹没.
所以,我想做的很简单.告诉Log4Net只显示我的单个类的日志消息.我玩弄了一下,但无法搞清楚......
任何人都可以提供帮助,我认为以下代码说明了我的想法:
var filter = new log4net.Filter.LoggerMatchFilter();
filter.LoggerToMatch = typeof(DatabaseDirectory).ToString();
filter.AcceptOnMatch = false;
var x = new log4net.Appender.ConsoleAppender();
x.Layout = new log4net.Layout.SimpleLayout();
x.AddFilter(filter);
log4net.Config.BasicConfigurator.Configure(x);
好的,谢谢你的帮助,但这里一定有问题.但我越来越近了.我尝试了XML配置,它有更多的文档.我使用以下XML配置设法实现了预期的结果.上面的"纯代码"版本中必定存在一些错误配置.
以下XML配置提供"正确"输出,这与上面代码中的配置不同.有谁看到了差异?
<log4net>
<root>
  <level value="DEBUG" />
  <appender-ref ref="ConsoleAppender" />
</root>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
  <filter type="log4net.Filter.LoggerMatchFilter">
    <loggerToMatch value="Examples.FirstProject.Entities.DatabaseDirectory"/>
  </filter>
  <filter type="log4net.Filter.DenyAllFilter" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="[%C.%M] %-5p %m%n" />
  </layout>
</appender>
[编辑3]我使用"奇怪"版本"解决了它".至少对于最重要的键.这对我的情况来说是足够的,我想检查ALT和ALT + A是不一样的(从而确保没有按下A).不完美,但已经有很多时间来解决这么小的问题了.无论如何,感谢所有的答案... [编辑3]
[编辑4]由于280Z28 [/ EDIT 4]解决了它更清洁
我知道如何检查修改键以及如何测试单个键.问题是,我想检查是否按下了任何键.以下方法似乎"奇怪":-)
用C#编写的WPF应用程序
if (Keyboard.IsKeyDown(Key.A)) return true;
if (Keyboard.IsKeyDown(Key.B)) return true;
if (Keyboard.IsKeyDown(Key.C)) return true;
我知道这是一个枚举,所以我想到了一个循环,但是使用的"最大数字"是什么.这可能吗?顺便说一句,这是一个非常特殊的情况,通常我会使用一个事件,但在这种情况下我必须这样做.不幸的是,没有"list"Keyboard.CurrentlyDownKeys.至少我没看到它.
谢谢,克里斯
编辑:好的,因为它似乎是一个更大的交易,这里的原因是:我已经定义了一个"KeySet",它作为自定义函数的DictionaryKey.如果有人点击某个元素,则包装器会遍历字典并检查是否有任何预定义的"Keysets"处于活动状态.
这允许我定义简单的触发器,例如,如果按下ALT + A + B,则运行此功能.另一个选项是例如,如果按下ALT + STRG + A(在鼠标单击WPF元素期间),则运行此功能.
当前实现的唯一"问题",如果我定义一个不包含任何REAL键的Keyset,如按下ALT则运行,如果按下ALT + A,也会触发它.哦,在写这篇文章时,我意识到还有另外一个问题.如果按下ALT + A + B + C,ALT + A + B当前也会触发.
也许我的方法是错误的,我应该创建一个"静态密钥跟踪器"并将密钥集与其值进行比较(通过事件获取)..我将尝试一下.
编辑2 这不起作用,至少不是一个简单的方法.我需要一个FrameworkElement来附加到KeyDown,但我没有在静态构造函数中.我对某个元素的KeyDownEvents不感兴趣,但是"全局"...我认为我推迟了这个问题,它并不那么重要.不过,如果有人知道更好的不同方法......
很长一段时间,对于任何关心的人,这里有一些代码:
    public class KeyModifierSet
{
    internal readonly HashSet<Key> Keys = new HashSet<Key>();
    internal readonly HashSet<ModifierKeys> MKeys = new HashSet<ModifierKeys>();
    public override int GetHashCode()
    {
        int hash = Keys.Count + …我只是想知道,我正在设计一个与我的Android项目一起使用的库.现在我开始包含诸如apache FTP jar之类的东西来支持一些调试文件上传.
我知道并非所有项目都会使用库的所有部分(例如,某些项目根本不会有FTP上传,但是想要使用库中的UI工具).
现在我有三个问题:
Proguard是否删除未使用的源(自己的代码),例如我的UI工具类,如果它们从不是主项目的引用 - 意味着在应用程序中没有使用.
如果从未使用过,Proguard会删除外部库(例如apache ftp jar).如果没有,我可以包括来源,如果选项1适用.
资源文件怎么样(不是真正的Proguards工作,更多的IntelliJ或Eclipse) - 示例:我使用默认标记编写了一个谷歌地图扩展,存储在库项目中.如果我还不需要地图,那么这些文件是否包含在每个android项目中 - 并且有一种简单的方法可以防止这种情况发生.
更多的背景:我尽可能地将所有库中的东西保存在一个项目中.我还不知道分割库的好处,所以我不想过分为一切创建单独的库(过去做过,大部分时间都是模块化的方式)......
谢谢你的任何见解,克里斯