小编RaY*_*ell的帖子

.NET 4中的奇怪切换行为

我有一个问题,在下面的代码中了解导致编译错误的原因:

static class Program
{
    static void Main()
    {
        dynamic x = "";
        var test = foo(x);

        if (test == "test")
        {
            Console.WriteLine(test);
        }

        switch (test)
        {
            case "test":
                Console.WriteLine(test);
                break;
        }
    }

    private static string foo(object item)
    {
        return "bar";
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误switch (test)符合:

A switch expression or case label must be a bool, char, string, integral, 
enum, or corresponding nullable type.
Run Code Online (Sandbox Code Playgroud)

Intellisence向我展示了foo操作将在运行时解决,这很好,因为我使用动态类型作为参数.但是我不明白if当开关没有时条件编译得很好.

上面的代码只是我在我的应用程序(VSTO)中的简化版本,它是在将应用程序从VSTO3迁移到VSTO4之后出现的,当时VSTO中的一个方法被更改为返回dynamic类型值而不是object.

任何人都可以给我一个解释是什么问题.我知道如何解决它,但我想了解发生了什么.

.net .net-4.0 switch-statement

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

LoginView中的ASP.NET LoginStatus不会触发LoggingOut事件

我的APS.NET应用程序中有一个带有AnonymousTemplate和LoggedInTemplate的LoginView.我已将LogStatus控件放在LoggedInTemplate中,但它不能按预期工作.

这是代码

<asp:LoginView ID="LoginView1" runat="server">
    <AnonymousTemplate>
        <asp:Login ID="Login1" runat="server" OnAuthenticate="Login1_Authenticate"
            DisplayRememberMe="False" PasswordRecoveryUrl="/" 
            DestinationPageUrl="/">
        </asp:Login>
    </AnonymousTemplate>
    <LoggedInTemplate>
        You are logged in as 
        <asp:LoginName ID="LoginName1" runat="Server"></asp:LoginName>.
        <asp:LoginStatus ID="LoginStatus1" runat="server" LogoutAction="Redirect" 
            LogoutPageUrl="/" onloggingout="LoginStatus1_LoggingOut" />
    </LoggedInTemplate>
</asp:LoginView>
Run Code Online (Sandbox Code Playgroud)

所有事件处理程序都在代码隐藏文件中正确定义.

问题是,如果用户登录,他将从LoginStatus控件中看到带有注销链接的用户名.单击注销链接会将用户返回到登录表单(登录和注销表单都是同一用户控件的一部分)但如果我刷新页面,则用户仍然会登录.

我注意到如果我在LoginView之外移动LoginStatus控件,那么注销过程将按预期工作.我还注意到,当LoginStatus在LoginView中时,它不会引发注销事件.

有没有人有任何想法可能是什么问题?

asp.net loginview loginstatus

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

NSPredicate用于多字搜索

在我的iOS应用程序中,我的fetch控制器有一个非常简单的谓词.

NSString *format = [NSString stringWithFormat:@"name like[c] '%@'", nameVar];
NSPredicate *predicate = [NSPredicate predicateWithFormat:format];
[fetchController setPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)

它执行基本的不区分大小写的名称查找.现在我想改变它,以便我可以在搜索框中放置一些单词(nameVar具有搜索框中的值),用空格分隔,并让谓词过滤匹配所有这些关键字的结果.

所以,如果我有两个名字:"约翰史密斯"和"玛丽史密斯",我搜索:"史密斯M"我想只有一个结果,但这样的搜索:"Sm th ith"应该返回两个值.

有谁知道如何实施?

iphone nspredicate

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

如何对jQuery键盘事件进行单元测试?

有没有一种方法来测试JavaScript的键盘事件处理程序(keypress,keyup,keydown事件)?

我知道我可以声明这样的事件处理程序:

function keyUpEvHandler(e) {
    ... // code here
}

$('#myId').keyup(keyUpEvHandler);
Run Code Online (Sandbox Code Playgroud)

然后在单元测试中运行此函数,但我必须准备事件参数对象与按下实际键时传递的相同:

var e = {keyCode: 70, ...};
Run Code Online (Sandbox Code Playgroud)

有没有办法触发这个事件并传递关键代码作为参数或类似的东西?不幸的是,jQuery trigger()docs不包括键盘事件.

jquery events unit-testing qunit keyboard-events

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

在spaghetti代码库之上使用什么php框架?

我的团队必须维护一个写得很糟糕的大型php应用程序.它是在一个设计不佳的数据库之上混合使用html,javascript和SQL(例如,它有一个包含几百列的表).代码库的唯一优势是它可以工作.

我们经常修复错误并重写它的一部分.

我想给我们做的重写提供一个结构,所以我想将mvc框架集成到代码库中.你能建议一个好的环境框架吗?

以下是我希望从这样的框架中获得的事项列表:

  • API必须非常稳定.我们不能在每个版本上重写代码.
  • 自定义会话管理或至少使用标准$ _SESSION [](能够与旧代码交谈).
  • 自定义验证.
  • 应该很好地支持使用原始SQL(数据库很难用对象表示).
  • 它不应该假设每个控制器都有一个表.

php frameworks

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

C#锁定和代码分析警告CA2002

在我的应用程序中,我有一个启动同步过程的表单,出于多种原因,我希望一次只允许一个同步运行.所以我在我的表单中添加了一个静态bool字段,指示是否正在进行同步,并添加了一个锁定,如果尚未设置此字段,则将该字段设置为true,以便第一个线程可以启动同步,但是当它运行其他每个线程时将尝试启动它将终止.

我的代码是这样的:

internal partial class SynchronizationForm : Form
{
    private static volatile bool workInProgress;

    private void SynchronizationForm_Shown(object sender, EventArgs e)
    {
        lock (typeof(SynchronizationForm))
        {
            if (!workInProgress)
            {
                workInProgress = true;
            }
            else
            {
                this.Close();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好用但是当我在我的项目上运行Code Analysis时,我收到以下警告消息:

CA2002:Microsoft.Reliability:'SynchronizationForm.SynchronizationForm_Shown(object,EventArgs)'锁定类型为'Type'的引用.将其替换为具有强身份的对象的锁定.

任何人都可以向我解释我的代码有什么问题,如何改进它以使警告消失.对象具有强烈的身份意味着什么?

c# code-analysis locking

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

线程终止时调用方法

我有一个启动线程的表单.现在我希望表单在此线程终止时自动关闭.

到目前为止我找到的唯一解决方案是在表单中添加一个计时器,并检查每个tick上是否存在线程.但我想知道是否有更好的方法可以做到这一点?

目前我的代码看起来更像这样

partial class SyncForm : Form {
    Thread tr;

    public SyncForm()
    {
        InitializeComponent();
    }

    void SyncForm_Load(object sender, EventArgs e)
    {
        thread = new Thread(new ThreadStart(Synchronize));
        thread.IsBackground = true;
        thread.Start();
        threadTimer.Start();
    }

    void threadTimer_Tick(object sender, EventArgs e)
    {
        if (!thread.IsAlive)
        {
            Close();
        }
    }

    void Synchronize()
    {
        // code here
    }
}
Run Code Online (Sandbox Code Playgroud)

c# methods multithreading asynchronous

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

iPhone SDK:我是否需要询问用户使用GPS的权限?

在我的iPhone应用程序中,我需要使用GPS(精确的CoreLocation)来获取设备的当前位置.我知道大多数(如果不是全部)使用GPS的应用程序都有一个弹出窗口,要求用户允许GPS访问.这是由iPhone SDK自动完成的,还是我应该自己实现这些功能?

我试图在iPhone模拟器上运行我的应用程序,它根本没有要求权限,所以我想知道在实际的手机上是否会发生同样的事情.

如果我自己实现并且SKD提供了开箱即用的功能,那么我将在我的应用程序中有两个我不想要的确认.

iphone gps popup core-location

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

实体框架5 - 保存更改后立即刷新DbContext

我有一个使用Entity Framework 5的MVC应用程序.在一些地方,我有一个代码可以创建或更新实体,然后必须对更新的数据执行某种操作.其中一些操作需要访问导航属性,我无法让它们刷新.

这是示例(我有简化的代码)

楷模

class User : Model
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}

class Car : Model
{
    public Guid Id { get; set; }
    public Guid DriverId { get; set; }
    public virtual User Driver { get; set; }

    [NotMapped]
    public string DriverName
    {
        get { return this.Driver.Name; }
    }
}
Run Code Online (Sandbox Code Playgroud)

调节器

public CarController
{
    public Create()
    {
       return this.View();
    }

    [HttpPost]
    public Create(Car car)
    {
        if …
Run Code Online (Sandbox Code Playgroud)

entity-framework dbcontext entity-framework-5

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

在Resharper分析中忽略设计器和生成的文件

我一直在使用Resharper几天,我真的很喜欢这个工具,但有一件事让我烦恼,我想知道它是否可以改变.

我从生成的代码中获得了很多问题通知(在我的项目中差不多有1400个).我想将这些文件设置为忽略,因此不会像使用StyleCop和CodeAnalysis那样检查它们.不幸的是,看起来Resharper从它的选项中忽略了Generated Code设置,因为我仍然收到相同的通知.我已经尝试设置文件掩码(即for *.resx)并手动添加文件生成,但它仍然没有改变任何东西.

我不知道它是否重要,但我正在使用VS 2010.

.net resharper visual-studio

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