小编Ken*_*hou的帖子

如何检测集合是否包含特定类型的实例?

假设我创建了类似的集合

Collection<IMyType> coll;
Run Code Online (Sandbox Code Playgroud)

然后我有许多实现,IMyTypem如T1,T2,T3 ...

然后我想知道集合coll是否包含T1类型的实例.所以我想写一个像这样的方法

public bool ContainType( <T>){...}
Run Code Online (Sandbox Code Playgroud)

这里param应该是类类型,而不是类实例.如何为这类问题编写代码?

c# collections

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

静态属性和单例之间有什么区别?

使用C#实现的Singleton可以是:

public class Singleton
{
   private static Singleton instance;

   private Singleton() {}

   public static Singleton Instance
   {
      get 
      {
         if (instance == null)
         {
            instance = new Singleton();
         }
         return instance;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

如果我使用静态来实现它像:

public static class Globals{
  public static Singleton Instance = new Singleton();
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,app也应该只获得整个应用程序的一个实例.那么这两种方法之间的区别是什么?为什么不直接使用静态成员(更简单直接)?

c# design-patterns

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

如何为同一个按钮运行客户端和服务器端代码?

在Asp.NET aspx页面中,有一个数据保存按钮,当用户点击此按钮时,我想:1.立即禁用此按钮2.然后调用函数Save()后面的代码将数据保存回DB 3.然后再次启用此按钮.

我做了如下:

  1. apsx中的JS函数:

    function DisableSave(){saveButton = document.getElementById('<%= btnSave.ClientID%>'); saveButton.disabled = TRUE; 返回false; }

  2. 按钮脚本:

    <--- asp:Button ID ="btnSave"OnCommand ="Button_Command"CommandName ="Save"runat ="server"Text ="Save"OnClientClick ="javascript:DisableSave();"/>

  3. 在函数Save()(假设由CommandName调用)后面的代码中,设置Save按钮enable back.

但是当我运行代码时,只禁用保存按钮,没有发生代码隐藏调用.

怎么解决?

asp.net

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

如何触发用户控件中的代码后面的按钮Click事件?

是否可以在用户控件中的代码后面触发按钮Click事件?

silverlight-4.0

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

是否可以将参数传递给SQL Server数据库中的触发器?

表可以在插入/删除/更新时触发.触发器将由DB引擎在内部触发.

是否可以将参数传递给SQL Server数据库中的触发器,如存储过程?

sql sql-server-2008

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

如何使用wcf ria服务刷新客户端实体的实例?

我有问题再次调用WCF RIA服务来刷新客户端的数据.这是我的情况:

在服务器端,域服务是这样的:

public IQueryable<Person> GetPersonByID(int id)
       {
           var result = this.ObjectContext.Persons.
               Where(e => e.PersonID == id);
           return result; // check point 1
       }
Run Code Online (Sandbox Code Playgroud)

在客户端,我按以下方式拨打电话(这是通过一个名为"刷新"按钮的按钮来调用):

this._amsService.Context.Load<Person>(
    this._amsService.Context.GetPersonByIDQuery(this.Person.ID),
    LoadBehavior.RefreshCurrent,
    result =>
    {
        this.Person = result.Entities.FirstOrDefault(); //check point 2
        this.RaisePropertyChanged("Person");     

    }, null);
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试的:

假设我在数据库中有一个人,数据说personID=1,Age = 16.

  1. 然后运行应用程序,我以正确的方式获取数据.

  2. 然后转到数据库,用SQL更新数据进行更改Age = 20.

  3. 然后回到应用程序并单击"刷新"按钮进行新的呼叫,但是年龄未更新到20,它仍然是16.

我在调试模式下运行应用程序,并检查数据:

在检查点1,我检查结果中的数据,没关系,Age = 20.

在检查点2,我检查数据result.Entities,数据没有刷新,它仍然是Age = 16.

我试过了LoadBehavior.MergeIntoCurrent,LoadBehavior.RefreshCurrent,但没有成功.

因此,我需要刷新SL应用程序主机页面以重新加载整个SL应用程序,然后我可以看到新数据.这对最终用户来说是不可接受的.

我不明白为什么.我也尝试使用fiddler来点击刷新按钮时获取数据,数据确实得到了最新的数据Age = 20 …

silverlight-4.0 wcf-ria-services

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

如何在删除触发器后获取子进程中的父ID?

假设我有桌子:

Employee(empid, ....)
Phone(phoneid, ...) 
EmployeePhone(empid, phoneid, ...)
Run Code Online (Sandbox Code Playgroud)

在外键关系上定义了外键创建和级联删除.

现在我从手机桌上删除了一部手机.我想在表Phone的Delete触发器中记录删除.

但我无法在手机中获得empid删除后的触发器

select empid from deleted d join EmployeePhone e on d.phoneid = e.Phoneid
Run Code Online (Sandbox Code Playgroud)

因为使用外键关系通过级联删除删除了EmployeePhone中的记录.

如何在删除触发器后获得电话中的empid?

t-sql sql-server-2008

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

如何安装.NET 4.5?

我在Windows 7上下载并安装了.NET 4.5 beta,但不确定它的安装位置.

  1. 检查C:\ Windows\Microsoft.NET\Framework,找不到4.5的文件夹
  2. 打开VS 2010并为解决方案中的一个项目打开属性,Target Framework列表中没有4.5,只有.Net Framework 4.

如何确保安装正常以及如何使用它?

.net .net-4.5

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

在SQL Server 2008上使用Filtered Index删除/插入失败?

我使用默认设置创建存储过程,如:

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO

Create  PROCEDURE [dbo].[TestSP] 
AS
BEGIN
   set arithabort off
   set arithignore on
   --.....
END
Run Code Online (Sandbox Code Playgroud)

没事.然后我在表上创建了一个过滤的唯一索引,用于DB中的非空值,然后我无法在SQL Server Management Studio中运行任何存储过程.我得到的错误是这样的:

DELETE(或INSERT)失败,因为以下SET选项具有不正确的设置:'ANSI_NULLS,QUOTED_IDENTIFIER'.验证SET选项是否正确,以便与计算列和/或筛选索引和/或查询通知和/或XML数据类型方法和/或空间索引操作的索引视图和/或索引一起使用.

我尝试运行存储过程,如:

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
EXEC TestSP
Run Code Online (Sandbox Code Playgroud)

要么

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
EXEC TestSP
Run Code Online (Sandbox Code Playgroud)

我仍然遇到上述错误.我很困惑.如何解决这个问题?

sql-server-2008 filtered-index

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

在Windows 8上的Visual Studio 2012中找到设备面板的位置?

1.在Windows 8上安装VS 2012 Ultimate,然后启动VS 2012,但无法从VS2012 View菜单中找到设备面板.Windows商店应用程序只有3个调试选项:

Simulator  
Local Machine  
Remote Machine  
Run Code Online (Sandbox Code Playgroud)

这里提到的设备面板.

2.如果使用模拟器调试windows存储应用程序,运行应用程序,然后尝试使用Alt + F4停止调试应用程序,在模拟器中运行的应用程序将不会关闭,如果使用Alt + Tab切换到VS 2021以停止调试器, VS 2012将被冻结并最终崩溃.

不确定哪里错了.怎么解决?在哪里找到设备面板,它与模拟器相同吗?

windows-8 visual-studio-2012 windows-store-apps

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