小编Sek*_*hat的帖子

结构,接口和拳击

可能重复:
结构实现接口是否安全?

拿这个代码:

interface ISomeInterface
{
    public int SomeProperty { get; }
}

struct SomeStruct : ISomeInterface
{
    int someValue;

    public int SomeProperty { get { return someValue; } }

    public SomeStruct(int value)
    {
        someValue = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我在某个地方这样做:

ISomeInterface someVariable = new SomeStruct(2);
Run Code Online (Sandbox Code Playgroud)

就是SomeStruct在这种情况下,盒装?

c# struct boxing interface value-type

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

我是否正确编写了我的第一个MSpec规范?

我正在编写我的第一个MSpec规范,我想要一些指导.我将规范保留在"待处理"状态,但上下文已填写完整.有什么改进吗?

作为参考,这是故事和第一个场景:

Story: "Blog admin logs in to the system"

As a blog writer
I want to be able to log in to my blog
So that I can write posts and administer my blog

Scenario: "Logs in from the login page"

Given the user enters in correct credentials for a user in the system
When the user clicks the "Login" button
Then log the user in and redirect to the admin panel with a message 
stating that he logged …
Run Code Online (Sandbox Code Playgroud)

c# bdd mspec

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

Ruby和linux,首选设置?

Mac有TextMate作为ruby开发的首选应用程序,但是linux的首选应用程序是什么?我需要一些可以轻松使用多个文件,项目结构和设置命令来运行我的ruby应用程序或者如果它是一个我的merb app.Syntax突出显示也是必须的.

现在我通常使用Vim,但它不适合处理多个文件或项目结构,即使使用VTreeView插件或多个VIM窗口也是如此.

那么你们会建议什么?

如果你有更好的插件用于VIM随意提及它们,我不会在这里排除VIM.

ruby linux text-editor editor

24
推荐指数
4
解决办法
2万
查看次数

在C#中定义不同类型的数字

您可以在C#中以各种方式定义一个数字,

1F // a float with the value 1
1L // a long with the value 1
1D // a double with the value 1
Run Code Online (Sandbox Code Playgroud)

我个人正在寻找哪种方式short,但是为了让问题更好地为人们提供参考,你可以应用的数字文字的所有其他后期修复是什么?

c# numbers

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

NHibernate,奇怪的"会话已关闭!" 错误

注意:现在我输入了这个,我不得不为超长问题道歉,但是,我认为这里提供的所有代码和信息在某种程度上都是相关的.


好吧,我在ASP.NET webforms应用程序的随机点上得到奇怪的"Session Is Closed"错误.然而,今天,它终于在同一个地方一次又一次地发生.我几乎可以确定在我的代码中没有任何处理或关闭会话,因为使用的代码位远离所有其他代码,如下所示.

我也使用ninject作为我的IOC,这可能/可能不重要.

好的,首先,我SessionFactoryProvider和SessionProvider班级:


SessionFactoryProvider

public class SessionFactoryProvider : IDisposable
{
    ISessionFactory sessionFactory;

    public ISessionFactory GetSessionFactory()
    {
        if (sessionFactory == null)
            sessionFactory =
                Fluently.Configure()
                        .Database(
                            MsSqlConfiguration.MsSql2005.ConnectionString(p =>
                                p.FromConnectionStringWithKey("QoiSqlConnection")))
                        .Mappings(m =>
                            m.FluentMappings.AddFromAssemblyOf<JobMapping>())
                        .BuildSessionFactory();

        return sessionFactory;
    }

    public void Dispose()
    {
        if (sessionFactory != null)
            sessionFactory.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

SessionProvider

public class SessionProvider : IDisposable
{
    ISessionFactory sessionFactory;
    ISession session;

    public SessionProvider(SessionFactoryProvider sessionFactoryProvider)
    {
        this.sessionFactory = sessionFactoryProvider.GetSessionFactory();
    }

    public ISession GetCurrentSession()
    {
        if (session == null) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net nhibernate ninject

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

XNA - 键盘文本输入

好的,基本上我希望能够检索键盘文本.就像将文本输入文本字段或其他内容一样.我只是为Windows编写游戏.我忽略了使用Guide.BeginShowKeyboardInput,因为它打破了自包含游戏的感觉,而且指南总是显示XBOX按钮的事实对我来说也不合适.是的,这是最简单的方法,但我不喜欢它.

接下来我尝试使用System.Windows.Forms.NativeWindow.我创建了一个继承自它的类,并将其传递给了Games窗口句柄,实现了WndProc函数来捕获WM_CHAR(或WM_KEYDOWN),尽管WndProc被调用了其他消息,WM_CHAR和WM_KEYDOWN从未这样做过.所以我不得不放弃这个想法,此外,我还引用了整个Windows窗体,这意味着不必要的内存占用空间.

所以我的最后一个想法是创建一个Thread级别的低级键盘钩子.到目前为止,这是最成功的.我收到WM_KEYDOWN消息,(还没试过WM_CHAR)将虚拟键码与Win32函数MapVirtualKey一起转换为char.我收到了我的文字!(我现在只是用Debug.Write打印)

但是有几个问题.好像我有大写锁定,并且没有响应的移位键.(当然不是,它只是每个键只有一个虚拟键代码,所以只翻译它有一个输出)并且它增加了开销,因为它将自己附加到Windows Hook列表并且没有我那么快d喜欢它,但缓慢可能更多是由于Debug.Write.

有没有其他人接近这个并解决它,而不必求助于屏幕键盘?还是有人有进一步的想法让我尝试?

提前致谢.

吉米问的问题

也许我不理解这个问题,但为什么你不能使用XNA Keyboard和KeyboardState类?

我的评论:

这是因为虽然您可以读取键状态,但您无法访问键入的文本以及用户键入的方式.

所以让我进一步澄清一下.我想实现能够从用户读取文本输入,就好像他们在文本框中键入是Windows.键盘和KeyboardState类获取所有键的状态,但我必须将每个键和组合映射到它的字符表示.当用户不使用与我特别使用的符号相同的键盘语言时(我的双引号是shift + 2,而美国键盘在返回键附近的某处),这就会失败.


似乎我的窗口挂钩是要走的路,只是我没有得到WM_CHAR的原因是因为XNA消息泵不做翻译消息.

每当我收到WM _KEYDOWN消息时添加TranslateMessage 意味着我得到了WM_CHAR消息,然后我用它在我的MessageHuff类中触发了一个字符类型的事件,我的KeyboardBuffer类已订阅了该事件,然后将其缓冲到文本缓冲区:D(或StringBuilder,但结果是一样的)

所以我按照自己的意愿工作.

非常感谢Jimmy提供了一个非常丰富的线索链接.

.net c# xna

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

这个测试名称是否略高于顶部

正如标题所示,这个测试名称只是顶部的一点吗?

WhenChargeIsGreaterThanRestingChargeButLessThanChargeRestApproachStep_OnUpdate_ChargeIsSetToRestingCharge
Run Code Online (Sandbox Code Playgroud)

关于如何改进这个的任何建议?或者它是好的吗?

下面是整个测试夹具,因此您可以获得一些上下文:)

public class NeuronTests    
{
        [Fact]
        public void OnUpdate_NeuronFiresWhenChargeIsEqualToThreshold()
        {
            Neuron neuron = new Neuron();
            bool fired = false;
            neuron.Fired += (s, e) => fired = true;
            neuron.Charge = Neuron.ChargeThreshold;

            neuron.Update();

            Assert.True(fired, "Neuron didn't fire");
        }

        [Fact]
        public void OnUpdate_NeuronDoesntFireWhenChargeIsLessThanThreshold()
        {
            Neuron neuron = new Neuron();
            bool fired = false;
            neuron.Fired += (s, e) => fired = true;

            neuron.Charge = Neuron.ChargeThreshold - 1f;
            neuron.Update();

            Assert.False(fired, "Neuron fired!");
        }

        [Fact]
        public void OnUpdate_NeuronFiresWhenChargeIsGreaterThanThreshold()
        {
            Neuron neuron = new …
Run Code Online (Sandbox Code Playgroud)

c# tdd unit-testing naming-conventions xunit.net

12
推荐指数
2
解决办法
690
查看次数

存储登录的用户详细信息

在创建Web应用程序时,假设您有一个表示单个用户的User对象,您认为存储用户登录的最佳方式是什么?

我想到的两种方式是:

  • 在会话变量中存储用户数据库ID
  • 将整个用户对象存储在会话变量中

有任何更好的建议,使用上述方法的任何问题?也许安全问题或内存问题等等

web-applications

8
推荐指数
2
解决办法
1355
查看次数

System.Web.Cache,会话级别或应用程序级别

随机快速提问.

System.Web.Cache类,存储的信息在什么级别?在每个会话级别或整个应用程序级别?

谢谢

asp.net caching

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

SlimDX和WPF通过D3DImage

我已经使用SlimDX和WPF编写了一些代码,我希望最终的结果是红屏.

不幸的是,我得到的只是黑屏.

这是在Windows 7上.

任何人都可以看到我失踪的重大事件吗?

我使用单独的表面作为后备缓冲的原因D3DImage是我将需要多个视口.我认为渲染分离表面而不是设备初始后备缓冲区将是实现这一目标的最佳方式.

无论如何,使用代码..

免责声明:请忽略不良代码,这完全是作为丢弃代码编写的,所以我可以弄清楚如何实现我所追求的目标.

这是我的窗口类:

namespace SlimDXWithWpf
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        SlimDXRenderer controller;

        public MainWindow()
        {
            InitializeComponent();
            controller = new SlimDXRenderer();
            controller.Initialize();

            D3DImage image = new D3DImage();

            image.Lock();
            controller.RenderToSurface();
            image.SetBackBuffer(D3DResourceType.IDirect3DSurface9, controller.SurfacePointer);
            image.AddDirtyRect(new Int32Rect(0, 0, image.PixelWidth, image.PixelHeight));            
            image.Unlock();

            Background = new ImageBrush(image);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

继续我的"渲染器"课程

namespace SlimDXWithWpf
{
    public class SlimDXRenderer : IDisposable
    {
        Direct3DEx directX;
        DeviceEx device;
        Surface surface;
        Surface …
Run Code Online (Sandbox Code Playgroud)

c# wpf slimdx

5
推荐指数
0
解决办法
5122
查看次数