小编Ste*_*ers的帖子

从概念上讲,重播如何在游戏中发挥作用?

我对如何在游戏中实现重播感到好奇.

最初,我认为只会有一个游戏中所有玩家/动作的命令列表,然后它"重新玩"游戏并让引擎像往常一样渲染.但是,我已经看过FPS/RTS游戏中的重放,经过仔细检查,即使粒子和图形/听觉故障等内容也是一致的(这些故障通常一致的).

那么这是怎么发生的呢.在固定摄像机角度游戏中,我可能只是将整个场景的每一帧写入存储的流然后只是重放流回来,但这对于允许您暂停和移动摄像机的游戏来说似乎不够周围.您必须在所有时间点存储场景中所有内容的位置(否?).因此对于像粒子这样的东西来说,这是推送的大量数据,这似乎是对游戏性能的重要影响.

design-patterns

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

我怎样才能获得网站的图标?

简单问题:我创建了一个小应用程序,它基本上只是我系统托盘中的收藏夹,以便我可以从同一个地方打开常用的站点/文件夹/文件.从我的系统获取已知文件类型的默认图标并不是非常复杂,但我不知道如何从网站获取favicon.(例如,SO在地址栏中有灰色 - >橙色堆栈图标)

有谁知道我会怎么做?

c# favicon .net-4.0

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

如何从StyleCop规则SA1600中排除私有成员

有没有人知道如何更改StyleCop规则SA1600,说明必须记录元素,以便它只适用于属性而不适用于私有成员?

我们的ORM(DevExpress XPO)要求您拥有所有公共属性的私有成员(因为您必须在setter中调用一个函数来保存它并将其存储在私有成员中),并对公共属性和私有属性进行注释.考虑到一些表有超过50个字段,同样的事情的成员正在杀了我.

customization static-analysis stylecop

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

当你学到新东西/更好的东西时,我应该回去修理工作吗?

考虑到我们都在不断学习,我们都必须遇到一个问题,即我们学到的东西非常棒,可以显着改善我们的代码或部分代码.

问题是,当你学会了一些新的技术,策略或其他什么时,你或者你应该回到你知道有效的代码,但是可以更好/可维护/更快/ 一般改进并实现这些新知识吗?

我理解"如果它没有被破坏,不要修复它"的概念,但是什么时候会失去你已经编写过的代码的骄傲,以及它对于重构的意义.

refactoring

20
推荐指数
2
解决办法
681
查看次数

实体框架4的内存数据库

有没有人知道一个适用于.NET 4/EF 4的良好内存数据库?具体来说,我正在考虑单元测试,这样每个设置都可以轻松创建数据库,并使用默认值填充它,每次拆卸都可以快速破坏它.

我听说SQLite 还不支持.NET 4,其他人在使用它作为SQLServer的替代品时遇到了麻烦(这是应用程序将在发布模式下运行的).

在过去,我使用了DevExpress XPO ORM,它有一个内置的内存数据库,可以很好地进行单元测试.

.net-4.0 in-memory-database entity-framework-4

20
推荐指数
2
解决办法
5802
查看次数

将usercontrol绑定到bool属性的反面

很简单:我希望做的一样,但WinForms的.谷歌似乎拔出来的一切都是特定的wpf(即我不想引用presentationframework.dll)

如果您不想阅读链接,请说明:

以下是我想要做的意图的表示,虽然它显然不起作用.

CheckBox1.DataBindings.Add(new Binding("Checked", this.object, "!SomeBool"));
Run Code Online (Sandbox Code Playgroud)

c# data-binding winforms

16
推荐指数
2
解决办法
8369
查看次数

泛型的通用列表

我正在尝试将通用对象列表存储在通用列表中,但我很难声明它.我的对象看起来像:

public class Field<T>
{
    public string Name { get; set; }
    public string Description { get; set; }
    public T Value { get; set; }

    /*
    ...
    */
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个这样的列表.我的问题是列表中的每个对象都可以有一个单独的类型,因此填充的列表可能包含这样的内容:

{ Field<DateTime>, Field<int>, Field<double>, Field<DateTime> }
Run Code Online (Sandbox Code Playgroud)

那么我该怎么宣布呢?

List<Field<?>>
Run Code Online (Sandbox Code Playgroud)

(我希望尽可能保持类型安全,所以我不想使用ArrayList).

c# generics .net-3.5

12
推荐指数
3
解决办法
9396
查看次数

帮助战略模式

我一直在经历Head First Design Patterns(最近刚刚进入)并且我正在阅读关于策略模式的内容,我想到它可能是一种很好的方式来实现计算税收等的常用方法.我在工作中使用的特定对象,但我有一个问题.

这就是我的想法:

public interface ITax
{
    decimal ProvincialTaxRate { get; set; } // Yes, I'm Canadian :)
    decimal CalculateTax(decimal subtotal);
}

public SaskatchewanTax
{
    public decimal ProvincialTaxRate { get; set; }

    public SaskatchewanTax()
    {
        ProvincialTaxRate = new decimal(0.05f);
    }

    public decimal CalculateTax(subtotal)
    {
        return ProvincialTaxRate * subtotal + FederalTaxRate * subtotal;
    }
}

public OntarioTax
{
    public decimal ProvincialTaxRate { get; set; }

    public OntarioTax()
    {
        ProvincialTaxRate = new decimal(0.08f);
    }

    public decimal CalculateTax(decimal subtotal)
    {
        return …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns strategy-pattern

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

Web服务无法序列化接口

我有这样的界面:

public interface IDocument : ISerializable
{
    Boolean HasBeenUploaded { get; set; }
    void ISerializable.GetObjectData(SerializationInfo, StreamingContext) { }
}
Run Code Online (Sandbox Code Playgroud)

有三个文件继承自此,所有这些文件序列化都很好.但是在创建一个简单的Web服务时,它什么都不做,可以将它们上传到...

public class DCService : System.Web.Services.WebService
{
    [WebMethod]
    public Boolean ReceiveDocument(IDocument document)
    {
        DBIO io = new DBIO();

        return io.InsertIntoDB(document); // does nothing; just returns true
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图运行它时得到这个:"无法序列化接口IDocument"

我不太清楚为什么这会成为一个问题.我知道有些人遇到了麻烦,因为他们不想强制子类来实现自定义序列化,但我确实如此,到目前为止它已经成功了.

编辑>如果我创建接受实现接口的对象的单个web方法,它工作正常,但这削弱了客户端/服务器之间的合同(并破坏了首先拥有接口的目的)

c# serialization web-services interface

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

mysql + update top n

我有这样的查询:

update  table
set     status = 1
where   status = 2;     
Run Code Online (Sandbox Code Playgroud)

但我只想这样做到前400名.我尝试添加'限制0,400'(就像我在查询中一样),但这不起作用.我做了一些搜索,mysql似乎不像sql server那样支持TOP(n)命令.

知道我是怎么做的吗?

编辑:为了将来参考,我使用以下样式进行选择,工作正常:

select  * 
from    table
where   ... limit 0, 400;
Run Code Online (Sandbox Code Playgroud)

但是在更新中,无论出于何种原因它都无法使用"0".我会考虑这种不一致和模棱两可的行为,但是哦.

mysql sql sql-update

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