小编Jam*_*mes的帖子

使用jQuery.on不为SVG元素触发mouseenter/mouseleave事件

看看这个jsFiddle

当使用jQuery与SVG(Raphael 2.0)结合时,mouseenter/ mouseleave似乎没有正确触发.我知道开箱即用SVG jQuery与SVG不是100%兼容,但是,据我所知,它似乎只影响IE9.

奇怪的是,如果你快速移动鼠标打开/关闭svg元素(确保你在HTML窗格中这么做)并返回它,事件会触发(但不是每次).只是为了确保这不是一个普遍的问题,on我把click每次都很好的事件联系起来.

只是想知道是否有人知道这是一个错误,甚至是一个已知的问题?

jquery svg mouseevent raphael internet-explorer-9

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

Object.DoSomething()vs DoSomethingWith(Object)

这可能仅仅是一个偏好问题,但是,我有兴趣知道何时使用这两种方法的最佳实践方式.

例如

var person = new Person();
person.Run();
Run Code Online (Sandbox Code Playgroud)

而不是

var person = new Person();
Excercise.Run(person);
Run Code Online (Sandbox Code Playgroud)

上面的例子可能不是最好的,但我的一般观点是你何时决定赋予对象责任而不是另一个类?

oop

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

App.Config与自定义XML文件

我已经阅读了很多语句,比如" 你不应该用自定义设置阻塞你的app.config文件 ".但是,我的印象是,这正是文件的目的?

它确实是一个偏好的东西吗?或者通过使用与app.config文件相关的自定义XML文件,是否有任何真正的好处(除了设置分离)?如果您需要明确地分离设置,那么最好使用自定义ConfigurationSection而不是选择自定义XML文件吗?

我想在这里有其他人的想法.

app-config application-settings

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

使用QueueUserWorkItem在单独的线程上发送电子邮件

我有一个控制台应用程序,可以向不同的收件人发送自定义的电子邮件(带附件),我想同时发送它们.我需要创建单独的SmtpClients来实现这一点,所以我使用QueueUserWorkItem来创建电子邮件并将它们发送到不同的线程中.

片段

var events = new Dictionary<Guid, AutoResetEvent>();
foreach (...)
{
    ThreadPool.QueueUserWorkItem(delegate
    {
        var id = Guid.NewGuid();
        events.Add(id, new AutoResetEvent(false));
        var alert = // create custom class which internally creates SmtpClient & Mail Message
        alert.Send();
        events[id].Set();
    });   
}
// wait for all emails to signal
WaitHandle.WaitAll(events.Values.ToArray());
Run Code Online (Sandbox Code Playgroud)

我已经注意到(间歇性地)有时并非所有电子邮件都使用上述代码到达特定邮箱.我原以为使用Sendover SendAsync意味着电子邮件肯定是从应用程序发送的.但是,在行之后添加以下代码WaitHandle.WaitAll行:

System.Threading.Thread.Sleep(5000);
Run Code Online (Sandbox Code Playgroud)

似乎工作.我的想法是,无论出于何种原因,仍然没有发送一些电子邮件(即使在Send方法运行之后).给予额外的5秒似乎给应用程序足够的时间来完成.

这可能是我等待发送电子邮件的方式的问题吗?或者这是实际Send方法的问题?一旦我们通过这条线,电子邮件肯定是从应用程序发送的吗?

任何有关此问题的想法都会很棒,似乎无法完全理解实际原因.

更新

这里要求的是SMTP代码:

SmtpClient client = new SmtpClient("Host");
FieldInfo transport = client.GetType().GetField("transport", BindingFlags.NonPublic | BindingFlags.Instance);
FieldInfo authModules = transport.GetValue(client).GetType()
    .GetField("authenticationModules", BindingFlags.NonPublic | …
Run Code Online (Sandbox Code Playgroud)

c# multithreading smtp

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

动态加载DLL有什么好处?

寻找动态加载DLL的优势,而不是让您的应用程序默认加载DLL.

.net c# dll dynamic-loading

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

包含子元素集合的配置元素

我想在我的web.config中有一个自定义部分,如下所示:

<MyMainSection attributeForMainSection = "value foo">

    <add name = "foo" 
    type = "The.System.Type.Of.Foo, Assembly, Qualified Name Type Name" />

    <add name = "bar" 
    type = "The.System.Type.Of.Bar, Assembly, Qualified Name Type Name" />

</MyMainSection>
Run Code Online (Sandbox Code Playgroud)

我已经定义了以下代码:

using System.Configuration;

class MyMainSection : ConfigurationSection
{
    /*I've provided custom implemenation. 
      Not including it here for the sake of brevity. */ 
    [ConfigurationProperty("attributeForMainSection")]
    public string AttributeForMyMainSection { get; set; }

    [ConfigurationProperty("add")]
    public AddElement TheAddElement { get; set; }

    private class AddElement: ConfigurationElement
    {
        /* Implementation done */ …
Run Code Online (Sandbox Code Playgroud)

c# configuration app-config web-config

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

为什么我不能返回任意数组的字符串?

编译器允许我执行以下操作:

procedure MyProc(const ADynData: array of string);
Run Code Online (Sandbox Code Playgroud)

要么

procedure MyProc(const ADynData: TStringDynArray);
Run Code Online (Sandbox Code Playgroud)

并传递任意数据,如下所示:

MyProc(['Data1', 'Data2']);
Run Code Online (Sandbox Code Playgroud)

但是,不允许

function MyFunc: TStringDynArray;
....
function MyFunc: TStringDynArray;
begin
    Result := ['Data1', 'Data2'];
end;
Run Code Online (Sandbox Code Playgroud)

要么

function MyFunc: TStringDynArray;
const
    CDynData: array[0..1] of string = ('Data1', 'Data2');
begin
    Result := CDynData;
end;
Run Code Online (Sandbox Code Playgroud)

为什么是这样?这在技术上是不是一回事?

对于这些特定场景,返回任意数组字符串的建议(和最有效)方法是什么?

arrays delphi delphi-xe3

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

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

为查询中的每个结果调用表值函数

说我有这样的查询:

SELECT X FROM Table WHERE Y = 'Z'
Run Code Online (Sandbox Code Playgroud)

如何使用X上述查询中的每一个作为参数执行存储过程?

UPDATE

我已将SP更改为表值函数.因此,对于函数的每次调用,它将返回一个表.我需要做的是将所有这些结果存储在临时表中,让我的SP返回此表.

最后设法在@cyberkiwi的帮助下使用它.这是我的最终解决方案:

DECLARE @Fields TABLE (
    Field int)

INSERT INTO @Fields (X) SELECT * FROM tvf_GetFields(@SomeIdentifier)
SELECT * FROM @Fields
CROSS APPLY dbo.tvf_DoSomethingWithEachField([@Fields].Field)
Run Code Online (Sandbox Code Playgroud)

sql stored-procedures sql-server-2005

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

从枚举标志转换CSV,反之亦然

请考虑以下枚举:

[Flags]
public enum MyEnum
{
    Option1 = 0,
    Option2 = 1,
    Option3 = 2,
    Option4 = 4
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以将字符串等效(不是值)作为CSV字符串?通常我可以使用Enum.GetName函数将类型转换为字符串表示形式,但是,如果使用组合,则返回null.

所以基本上我想转换:

var options = MyEnum.Option1 | MyEnum.Option3;
Run Code Online (Sandbox Code Playgroud)

"Option1, Option3" 
Run Code Online (Sandbox Code Playgroud)

然后我希望能够将"Option1,Option3"转换回来MyEnum.Option1 | MyEnum.Option2.

建议?

c# enums serialization

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