小编kma*_*zek的帖子

什么时候MemoryStream上的GetBuffer()有用吗?

我知道,GetBuffer()在C#/一个MemoryStream.NET必须小心使用,因为,作为文档描述了这里,有可能在年底未使用的字节,所以你必须要确保只在第一MemoryStream的期待缓冲区中的.Length字节.

但后来我遇到了一个案例,其中缓冲区开头的字节是垃圾!实际上,如果您使用像反射器这样的工具并查看ToArray(),您可以看到:

public virtual byte[] ToArray()
{
    byte[] dst = new byte[this._length - this._origin];
    Buffer.InternalBlockCopy(this._buffer, this._origin, dst, 0,
        this._length - this._origin);
    return dst;
}
Run Code Online (Sandbox Code Playgroud)

所以要对返回的缓冲区做任何事情GetBuffer(),你真的需要知道_origin.唯一的问题是_origin是私有的,没有办法实现它......

所以我的问题是-什么是使用GetBuffer()MemoryStream()无将MemoryStream是如何构造的一些先验知识(这是什么套_origin)?

(正是这个构造函数,只有这个构造函数,设置原点 - 当你想要一个字节数组的MemoryStream从字节数组中的特定索引开始时:

public MemoryStream(byte[] buffer, int index, int count, bool writable, bool publiclyVisible)
Run Code Online (Sandbox Code Playgroud)

)

.net memorystream getbuffer

33
推荐指数
7
解决办法
2万
查看次数

StructureMap不可能使用注入实例进行setter注入

我在为我的测试注入一个实例到structmap时遇到了问题.

我的对象图看起来像这样

internal class ConfigurationManager : IConfigurationManager : IManager
{
   public ISomeManager SomeManager { get; set; }
}

internal class SomeManager : ISomeManager : IManager
{
   public IConfigurationManager  ConfigurationManager { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

1)首先我创建容器并添加所有找到的注册表

_container = new Container(c => c.Scan(s =>
{
   s.TheCallingAssembly();
   s.LookForRegistries();
}));
Run Code Online (Sandbox Code Playgroud)

其中一个扫描的程序集包含以下注册

x.For<IConfigurationManager>().Singleton.Use<ConfigurationManager>();
Run Code Online (Sandbox Code Playgroud)

2)然后我想为这些经理注入一个特殊的模拟对象

_configurationManagerStub = MockRepository.GenerateStub<IConfigurationManager>();
_container.Inject(_configurationManagerStub);
Run Code Online (Sandbox Code Playgroud)

3)然后创建管理器实例,而不配置setter注入(以避免循环依赖)

foreach (Type pluginType in AllManagers())
{
   managerInstances.Add(_container.GetInstance(pluginType));
}
Run Code Online (Sandbox Code Playgroud)

4)最后我使用BuildUp方法设置IManager类型的属性.

_container.Configure(x => x.SetAllProperties(c =>
{
   // configure the property injection for all managers …
Run Code Online (Sandbox Code Playgroud)

c# structuremap

15
推荐指数
1
解决办法
1765
查看次数

nunit锁定DLL

我一直在Windows 7 64位PC上使用nunit和visual studio 2010.

我能够打开nunit gui并运行我的单元测试.如果我然后更改其中一个单元测试并尝试重建,我收到如下文件锁定错误 -

错误1无法将文件"obj\Debug\myProject.Tests.dll"复制到"bin\Debug\myProject.Tests.dll".该进程无法访问文件'bin\Debug\myProject.Tests.dll',因为它正由另一个进程使用.myProject.Tests

我使用进程资源管理器来验证它是锁定dll的nunit-agent.exe.

我注意到通过工具>测试程序集,nunit.exe在clr版本Net 2.0下运行,nunit-agent.exe在clr版本Net 4.0下运行.这可能与问题有关吗?如果是这样,我该如何解决?如果没有,有没有人知道还有什么可能发生?

谢谢你的任何想法.

nunit visual-studio-2010

15
推荐指数
2
解决办法
3309
查看次数

Windows 8 - 启用远程访问选项

我在笔记本电脑上安装了win 8 rtm,今天决定我想要RDP.我去了'系统属性'对话框的远程表,没有选项来启用它.有一个无用的"远程协助"字段组,微软显然想强迫我使用.

我想要的是魔术复选框,可让任何人进入RDP.我见过(http://blogs.technet.com/b/digital_musketeer/archive/2011/09/14/how-to-enable-remote-desktop- on-the-windows-8-ctp.aspx)其他人可以选择,但我没有.我看起来像链接中的屏幕截图,除了远程访问字段组不存在.我是管理员.任何人都知道使用reg键打开它?

windows-8

14
推荐指数
1
解决办法
3万
查看次数

即使用户通过点击后退按钮来到页面,也要执行document.ready

我有一个带有jQuery的PHP页面,$(document).ready()它对页面上的表单进行了一些更改.这很好用.但是,如果我来到这个页面,然后转到另一个页面,然后从浏览器点击"返回"并返回到此页面,该$(document).ready()功能似乎根本不运行.这种情况发生在FF和Chrome上.

document.ready即使用户按下浏览器的后退按钮进入我的页面,是否有某些方法可以执行?

jquery

12
推荐指数
1
解决办法
1万
查看次数

如何从JGit RevCommit获取作者日期和提交日期

RevCommit有一个getCommitTime()方法,但它返回和int,它有没有作者的时间.如何从RevCommit获取作者和提交日期?

git jgit

11
推荐指数
1
解决办法
4397
查看次数

如何阻止java util日志格式化我的数字

我正在使用Java Util日志记录,每当我做这样的声明时

logger.log(Level.INFO, "print this number = {0}", number);
Run Code Online (Sandbox Code Playgroud)

它将我的号码从278487683165614格式化为278,487,683,165,614

在搜索日志时这非常烦人.

我可以阻止这样做吗?请帮忙.

java logging

11
推荐指数
2
解决办法
1960
查看次数

如何在ControlTemplate中使用ElementName绑定?

我有多个TextBlocks,它引用了我的应用程序中的不同元素.我的代码在页面中直接使用时工作正常.但是,我想创建一个ControlTemplate和一个ContentControl来减少代码的重复.

如何使用TemplateBinding从ContentControl传递对ElementName的引用到ControlTemplate?以下代码抛出此错误:

"无法将属性'ElementName'中的值转换为'System.String'类型的对象.'System.Windows.TemplateBindingExpression'类型的对象无法转换为'System.String'类型."

除了Tag属性之外,我还尝试了ContentStringFormat,它也没有用.

使用模板使其工作的正确方法是什么?

在此先感谢您的帮助,

---肖恩

这是代码示例:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
    <Page.Resources>
        <ControlTemplate x:Key="MyTemplate" TargetType="{x:Type ContentControl}">
            <TextBlock Margin="{Binding ElementName={TemplateBinding Tag}, Path=Margin}" Text="{TemplateBinding Content}" TextAlignment="{Binding ElementName={TemplateBinding Tag}, Path=TextAlignment}" Width="{Binding ElementName={TemplateBinding Tag}, Path=Width}" />
        </ControlTemplate>
    </Page.Resources>
    <StackPanel>
        <TextBlock x:Name="AnotherElement" Margin="10" Text="Main TextBlock" TextAlignment="Center" Width="100" />
        <TextBlock x:Name="AnotherElement2" Margin="20" Text="Second TextBlock" TextAlignment="Left" Width="250" />
        <TextBlock Margin="{Binding ElementName=AnotherElement, Path=Margin}" Text="Here is my TextBlock!" TextAlignment="{Binding ElementName=AnotherElement, Path=TextAlignment}" TextTrimming="CharacterEllipsis" Width="{Binding ElementName=AnotherElement, Path=Width}" />
        <TextBlock Margin="{Binding ElementName=AnotherElement2, Path=Margin}" Text="Here is my Second TextBlock!" TextAlignment="{Binding ElementName=AnotherElement2, …
Run Code Online (Sandbox Code Playgroud)

wpf xaml binding controltemplate

11
推荐指数
1
解决办法
6万
查看次数

如果可见,如何获取或计算没有垂直滚动条的ListBox的实际宽度

我想知道如果可见,如何获取或计算没有垂直滚动条ListBox的实际宽度.

我想要做的是改变ListBox中每个项目的宽度而不被Vertical Scrollbar覆盖.

Width="{Binding ActualWidth, 
    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}
Run Code Online (Sandbox Code Playgroud)

至少,上面的绑定告诉我ListBox的实际宽度,但是这个不处理垂直滚动条的宽度.

有什么好方法可以解决这个问题吗?

wpf binding listbox scrollbar

10
推荐指数
1
解决办法
4861
查看次数

如何在linq中编写EF以包括小写的比较

我有这个问题: select lower(Name) from User

如何使用linq到EF避免使用linq到object.

c# linq entity-framework

10
推荐指数
1
解决办法
5716
查看次数