问题列表 - 第11982页

C#:所以如果静态类是存储全局状态信息的不良做法,那么提供相同方便性的好方法是什么?

我一直注意到静态类在用于存储全局信息方面在SO上获得了很多不好的代表.(而且全局变量一般都被嘲笑)我只想知道下面的例子有什么好的选择......

我正在开发一个WPF应用程序,并且根据当前登录用户的ID过滤了从我的数据库中检索到的数据的许多视图.同样,我的应用中的某些点应该只能被视为"管理员"的用户访问.

我目前正在静态类中存储loggedInUserIdisAdmin bool.

我的应用程序的各个部分需要这些信息,我想知道为什么它在这种情况下不理想,以及替代品是什么.起床和跑步似乎非常方便.

我唯一可以想到的替代方法是使用IoC容器将Singleton实例注入需要此全局信息的类中,然后类可以通过其接口与之通信.然而,这是否过度/导致我陷入分析瘫痪?

提前感谢您的任何见解.


更新

因此,我倾向于通过IoC进行依赖注入,因为它可以更好地提供可测试性,因为我可以交换一个服务,如果需要,可以使用模拟提供"全局"信息.我想剩下的是注入的对象是单身还是静态.:-)

如果等待查看是否还有其他讨论,请问问Mark的答案.我不认为这是正确的方式.我只是想看到一些可以启发我的讨论,因为在没有任何建设性的替代方案的情况下,似乎有很多"这是坏的""很糟糕"的陈述在一些类似的问题上.


更新#2 所以我选择了Robert的答案,因为它是一个很好的选择(我认为替代方案是一个奇怪的词,可能是One True Way,因为它是内置于框架中).它并没有强迫我创建一个静态类/单例(尽管它是线程静态的).

唯一让我感到好奇的是,如果我必须存储的"全局"数据与用户身份验证无关,那将如何处理.

.net c# static class global-variables

25
推荐指数
1
解决办法
6551
查看次数

我应该将哪个STL容器用于FIFO?

哪个STL容器最适合我的需求?我基本上有一个10个元素的宽容器,在这个容器中我不断使用push_back新元素pop_front(大约一百万次).

我目前正在使用a std::deque来执行任务,但是想知道是否std::list会更高效,因为我不需要重新分配自己(或者我可能会误认为std::dequestd::vector?).或者是否有更高效的容器满足我的需求?

PS我不需要随机访问

c++ stl fifo

84
推荐指数
5
解决办法
8万
查看次数

失败,但不返回任何错误对象.为什么?

我试图理解[NSData writeToFile:options:error:]返回的值的含义.该方法返回BOOL,根据Apple的文档,如果操作成功,则为"YES,否则为NO".

很公平,但如果它不是,我会假设错误参数将被设置为某些可检索的NSError*值.然而,在我遇到的结果中,情况并非如此.因此我有点困惑,不知道如何确定导致失败的原因.

也就是说,我有这个代码(或多或少):

NSError* error = nil;
BOOL success = [data writeToFile: filePath error: &error];
if ( error )
    NSLog( @"error = %@", [error description] );
Run Code Online (Sandbox Code Playgroud)

success结果是NO在我正在运行的代码中,但该NSLog语句永远不会执行.怎么会?

霍华德

error-handling objective-c nsdata

5
推荐指数
1
解决办法
5479
查看次数

为什么这个rails查询的行为取决于时区?

我有一个基于时间的rails查询,它有一些奇怪的时区敏感行为,即使据我所知我使用的是UTC.简而言之,这些查询给出了不同的答案:

>> Model.find(:all,:conditions=>['created_at<=?',(Time.now-1.hours).gmtime]).length
=> 279
>> Model.find(:all,:conditions=>['created_at<=?',(Time.now-1.hours)]).length
=> 280
Run Code Online (Sandbox Code Playgroud)

DB实际上确实包含在过去一小时内创建的一个模型,并且模型的总数为280.因此只有第一个查询是正确的.

但是,在environment.rb中我有:

config.time_zone = 'UTC'
Run Code Online (Sandbox Code Playgroud)

系统时区(由'日期'报告)是BST(GMT + 1) - 因此不知何故,这会被视为UTC并打破查询.

这引起了我各种各样的问题,因为我需要将在不同时间传递的查询参数化为一个动作(然后使用Time.parse()进行转换),即使我以UTC时间发送,这个'关闭一小时'DST问题很多.即使使用'.gmtime()'也似乎无法解决它.

显然,这种差异是由某个地方的隐式转换造成的,导致BST被错误地视为UTC,但为什么呢?rails是否以UTC格式存储时间戳?Time class timezone不是很清楚吗?我正在使用Rails 2.2.2

那么这里发生了什么 - 围绕它编程的安全方法是什么?

编辑,一些额外的信息来显示DB和Time类正在做什么:

>> Model.find(:last).created_at
=> Tue, 11 Aug 2009 20:31:07 UTC +00:00
>> Time.now
=> Tue Aug 11 22:00:18 +0100 2009
>> Time.now.gmtime
=> Tue Aug 11 21:00:22 UTC 2009
Run Code Online (Sandbox Code Playgroud)

timezone datetime ruby-on-rails dst

8
推荐指数
1
解决办法
4228
查看次数

访问第二个父母的成员(继承)

这是我目前的布局:(问题是评论)

class A
{  
    int foo;  
}

class B : A {}

class C : B
{
    void bar()
    {
        //I want to access foo
        base.foo; // Doesn't work
        base.base.foo // Doesn't work, of course
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我无法A通过base在C中使用来访问成员.我如何访问它?谢谢 :)

c# double inheritance class

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

如何在Visual Studio中的不同项目中使用不同的选项卡设置

Visual Studio选项对话框允许您基于每种语言设置选项卡首选项(大小,插入空格等).但我经常处理几个c#项目,这些项目具有不同的设置值.

有没有办法在每个项目的基础上覆盖全局设置,或者至少在它们之间轻松切换?

visual-studio

25
推荐指数
1
解决办法
2510
查看次数

你依靠你的记忆或咨询参考文献并使用大量的intellisense?

我注意到我的代码不像以前那样多.今天我将更多的时间用于分析和设计,然后我将这种设计传达给程序员.然后他们做编码.这影响了我的编码效率,因为我必须参考参考文献并依赖智能感知.事情变得越来越复杂

现在,这是具有讽刺意味的.如果我雇用一名程序员并让他/她坐在电脑前,我可能会要求做一些编码,我会检查能力.我会根据他们对内存与咨询参考的使用来评估它们.也许我更喜欢那个没有过多咨询但是谁知道他们在做什么的程序员.

您有什么看法和经验?

ide resources analysis

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

按SQL级别对学生进行排名

我有这样一张桌子:

Date       StudentName    Score

01.01.09   Alex           100
01.01.09   Tom            90
01.01.09   Sam            70
01.02.09   Alex           100
01.02.09   Tom            50
01.02.09   Sam            100

我需要在不同日期内按分数对结果表中的学生进行排名,如下所示:

Date       Student         Rank

01.01.09   Alex             1
01.01.09   Tom              2
01.01.09   Sam              3
01.02.09   Alex             1
01.02.09   Sam              1
01.02.09   Tom              2

我怎么能在SQL中这样做?

sql t-sql sql-server

7
推荐指数
1
解决办法
2563
查看次数

Java EE与Servlet的优缺点

使用Java EE(EJB)而不仅仅是简单的Servlet实现的主要原因是什么?

我正在开发一个新项目,主要是一个必须非常快速和可扩展的Web服务.

抱歉有任何困惑,虽然我在Java方面经验丰富,但我对Java Web世界很陌生,可能不会很好地提出这个问题.

java servlets java-ee

5
推荐指数
2
解决办法
7250
查看次数

无法启动模拟应用程序:未知错误

  • OS X 10.5.7(原装Mac)
  • Xcode 3.1.3
  • iPhone SDK 3.0

当我尝试在模拟器中执行我的iPhone应用程序时,我收到了可怕的错误消息:

Failed to launch simulated application: Unknown error.

我的应用程序有两个目标,但这两个目标都会出现此错误.

发生错误时,模拟的操作系统会挂起 - 它会显示黑屏,不再响应任何输入.模拟器应用程序本身不会挂起 - 所有菜单都处于活动状态.

我尝试过的所有其他应用程序(主要是Apple样本)都可以正常运行.清除缓存,重新启动和在月球上嚎叫没有帮助.从头开始重建项目也没有帮助.我想我必须以较小的步骤再做一次.

同时,还有其他什么可以尝试下面这些?

  • Xcode | 空缓存......
  • 删除目录/Library/Caches/com.apple.DeveloperTools.###
  • 完全重建
  • 重启
  • 更改产品名称(它不包含任何空格)
  • 创建新项目并从头开始手动配置

来自system.log的引用:

12.08.09 0:13:59 [0x0-0xa70a7].com.apple.iphonesimulator[5368] -[MonitorController forwardEvents]: unable to send msg to ffffffff: 10000003 
12.08.09 0:13:59 [0x0-0xa70a7].com.apple.iphonesimulator[5368] -[MonitorController forwardEvents]: unable to send msg to ffffffff: 10000003 
12.08.09 0:14:03 com.apple.launchd[166] (com.apple.iPhoneSimulator:com.apple.dataaccess.dataaccessd) Unknown key for integer: JetsamPriority 
12.08.09 0:14:03 com.apple.launchd[166] (com.apple.iPhoneSimulator:com.apple.apsd) Path monitoring failed on "/var/mobile/Library/Preferences": No such file or directory …

iphone xcode ios-simulator

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