小编Tri*_*nko的帖子

ASP.NET主页面内容页面的ID全部更改,基于原始元素ID打破CSS?你在跟我开玩笑吗

ASP.NET主页面内容页面的元素似乎都是由ASP.NET页面渲染器更改或添加了ID.

这会根据原始元素ID中断所有CSS样式.

这是认真的工作原理吗?如果是这样,有办法吗?

css asp.net master-pages content-pages

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

为什么在SQL Server CLR中运行一个函数会导致崩溃,同时在独立应用程序中正常工作?

下面这两个方法是相似的,除了一个处理空值而另一个不处理.要处理空值,它使用SqlString类型并检查"get_IsNull"属性.

为什么第一个"A .NET Framework error occurred during execution of user-defined routine or aggregate "CheckMailingAddress": ."在SQL CLR中运行时会导致错误,而第二个不在?

特别是,TSQL错误是 "Msg 10329, Level 16, State 49, Line 1 .Net Framework execution was aborted."

.method public hidebysig static bool CheckMailingAddress(valuetype [System.Data]System.Data.SqlTypes.SqlString param0) cil managed
{
   .maxstack 8
    L_0000: ldarga.s param0
    L_0002: nop 
    L_0003: nop 
    L_0004: call instance bool [System.Data]System.Data.SqlTypes.SqlString::get_IsNull()
    L_0009: brfalse L_0010
    L_000e: ldc.i4.1 
    L_000f: ret 
    L_0010: ldarga.s param0
    L_0012: nop 
    L_0013: nop 
    L_0014: call instance string [System.Data]System.Data.SqlTypes.SqlString::get_Value()
    L_0019: call class DatabaseValues.MailingAddress …
Run Code Online (Sandbox Code Playgroud)

sql-server sqlclr

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

如何在另一个表达式中包含一个表达式?

我有一个 DateRange 类,我想将它应用到 IQueryable 作为 where 谓词,自动使用开始和结束日期并自动使用打开或关闭间隔。

public class DateRange
{
    public DateTime? BeginDate { get; set; }
    public DateTime? EndDate { get; set; }

    public bool BeginInclusive { get; set; }
    public bool EndInclusive { get; set; }

    public DateRange()
    {
        BeginInclusive = true;
        EndInclusive = false;
    }

    public IQueryable<T> Apply<T>( IQueryable<T> source, Expression<Func<T,DateTime>> dateField )
    {
        var result = source;
        if (BeginDate.HasValue)
        {
            if (BeginInclusive)
                result = result.Where( x => dateField >= BeginDate ); //does not compile
            else …
Run Code Online (Sandbox Code Playgroud)

c# lambda expression

3
推荐指数
2
解决办法
1645
查看次数

如何使用相同的SqlConnection对象在多个SqlCommands中声明和使用T-SQL变量来执行多个插入?

我想加载一个记录列表给出一个可能很长的用户名列表(从一个到几千个用户名).忽略如何选择名称,并假设无法从数据库中的任何现有数据确定这些名称.这适用于SQL Server 2005.

我特别想避免在where子句中使用带有数千个表达式单个select语句,这会导致SqlCommand对象的命令文本过长(例如...where n='bob000001' or n='bob000002' or ... or n='bob003000').听起来合理吗?

我决定通过使用用户名填充一个简单的表变量来执行选择,然后使用用户数据在表变量和表之间执行select/join.

所以,我需要做的第一件事是填充表变量.我有一些问题:

  • SQL Server 2008之前的T-SQL语法很简单,只需在单个语句中将多行插入表中,就需要多次选择和联合all.
  • 我没有使用SS2005的详细语法,甚至SQL Server 2008中提供的简洁语法,而是完全避免使用冗长的命令文本,只使用单个连接上的多个命令.
  • 在一个SqlCommand中声明一个表变量,当我尝试在后续的SqlCommands中使用它时,会产生"必须声明标量变量"错误.
  • 以任何方式涉及存储过程可能仍然涉及传递大量字符串,或者可能阻止变量持久存储在存储过程的范围之外.假设创建存储过程不是一种选择.

第三点是我现在要解决的问题.我已经看过人们(声称)成功声明并在单个SqlCommand中使用变量而没有错误的示例.使用多个SqlCommand实例时如何实现?我读到变量将持续存在于多个命令之间的单个连接.涉及交易可能会以某种方式帮助吗?

最后,请记住我不想使用临时表; 这样做会提供一个简单的解决方案,但它也避免了我要问的有关变量和多个SqlCommands的问题; 但是,如果你真的认为这是最好的选择,请随意说出来.

这是一个代码片段,显示正在发生的事情:

public static List<Student> Load( SqlConnection conn, List<StudentID> usernames )
{
    //Create table variable
    SqlCommand  command = new SqlCommand( "declare @s table (id varchar(30))", conn );
    command.ExecuteNonQuery();

    //Populate a table variable with the usernames to load
    command = new SqlCommand( "insert into @s (id) …
Run Code Online (Sandbox Code Playgroud)

.net variables scope sql-server-2005 sqlcommand

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

如何通过进程ID而不是窗口句柄将消息发送到特定进程?

要解决GenerateConsoleCtrlEvent的限制,我必须创建一个中间"中间人"进程来处理启动一些控制台应用程序.该进程的主要目的是在自身上调用GenerateConsoleCtrlEvent,导致自身和所有子进程干净地关闭以响应ctrl + break信号(而不是使用Process.Kill).这种需要源于GenerateConsoelCtrlEvent基本上没有效果,除非进程组id为零,这意味着它只对调用进程组本身有效.请参阅:https://stackoverflow.com/a/2431295/88409

所以无论如何...我已经创建了这个中间过程,它启动了一个在处理特定用户定义消息的表单上调用Application.Run的线程.

我的问题是......如何向这个进程发送消息来控制它?

我有Process对象及其进程ID,但这就是全部.Process.MainWindowHandle为零.

因此,我需要一种方法将消息发送到特定进程或将消息广播到特定进程中的所有窗口.

FindWindow不是一个选项,因为它试图在任何进程上按名称和类标识一个窗口,这是不可靠的.我想在没有歧义的情况下向特定进程发送消息.

.net c# sendmessage inter-process-communicat

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

如何从 C# 类型名称字符串中获取类型?

我一直在研究Type.NamespaceType.NameType.FullName和的返回值Type.AssemblyQualifiedName。存在不一致之处。

对于像 这样的内部类ConsoleApplication8.Program+InnerClass,命名空间返回ConsoleApplication8Name返回InnerClass,省略Program,因此连接Type.NameSpaceType.Name将是类名的不完整表示(仅作为示例)。

就连FullName属性也不一致。尽管它省略了程序集名称并返回ConsoleApplication8.Program+InnerClass这样的内部类,但FullName在诸如此类的类型的泛型参数中包含程序集名称List<long>(即使外部泛型类型本身省略了程序集名称,所以我猜那里存在一定程度的一致性)。

我目前正在将此代码与缓存类型名称查找一起使用,该查找使用 CodeDom 生成真正的 C# 代码名称。基本上,我试图扭转这个过程来获取类型,给定一个真实的类名。

static System.Collections.Concurrent.ConcurrentDictionary<Type, string> typeNameCache = new System.Collections.Concurrent.ConcurrentDictionary<Type, string>();

static string GetTypeName(Type type)
{
    string name;
    if (!typeNameCache.TryGetValue( type, out name ))
    {
        var codeDomProvider = CodeDomProvider.CreateProvider("C#");
        var typeReferenceExpression = new CodeTypeReferenceExpression(new CodeTypeReference(type));
        using (var writer = new StringWriter())
        {
            codeDomProvider.GenerateCodeFromExpression(typeReferenceExpression, writer, …
Run Code Online (Sandbox Code Playgroud)

.net c# reflection formatting typename

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

这个比较会被编译成泛型类中的常量布尔值吗?

typeof(T) == typeof(string)where T 是泛型类型参数编译为常量布尔值,因为条件在编译时是可知的?

c# generic-type-argument compile-time-constant compiler-optimization

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

为什么在 C# 方法中存在“lock”语句会显着增加其运行时间,即使 lock 语句从未执行过?

对于一千万次迭代,我正在比较访问单例的不同方式。

直接读取静态属性是最快的。

Lazy<T>,其Value属性在内部引入了空检查、装箱值的强制转换以及装箱值的访问需要更长的时间(2x - 3x)。

我发现令人吃惊的是,一个常见的双重检查锁定模式(对于大多数访问实际上只是空检查)花费的时间要长得多(在某些情况下几乎是 5 倍)——远比预期的要长。我还震惊地发现,简单地注释掉 'lock' 语句,即使它从未被击中,也可以减少接近静态属性的基本直接访问的时间,并为空检查增加了一点额外的开销。

仅仅在方法中存在这个“lock”语句,即使 lock 语句从未执行过,也会导致它花费更多时间,这有什么意义?我在此测试代码中预先分配了单例,因此永远不会命中锁定语句;然而,简单地取消对“锁定”行的注释会增加运行时间。我没有解释。

这是一个简短的示例,您可以将其粘贴到控制台应用程序中并运行以查看几个不同访问的时间。

using System;
using System.Diagnostics;
using System.Linq;
using System.Threading;

namespace SingletonInitializationMethodPerformanceTest
{
    public class Program
    {
        private const int TestRuns = 5;
        private const int AccessesPerTestRun = 10000000;
        private static int _totalAccesses;
        private static readonly Stopwatch Timer = new Stopwatch();
        private static readonly Func<Singleton>[] Tests = { Singleton.LazyInstance, Singleton.InstanceWithLockPresent, Singleton.InstanceWithLockCommentedOut, Singleton.InstanceWithLockInSeparateMethod, Singleton.DirectlyReturnedInstance };

        public static void Main(string[] args)
        {
            var results = Tests.Select(x => …
Run Code Online (Sandbox Code Playgroud)

c# performance locking

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