小编Ori*_*ael的帖子

动作中的C#异步

我想编写一个接受几个参数的方法,包括一个动作和一个重试量并调用它。

所以我有这段代码:

public static IEnumerable<Task> RunWithRetries<T>(List<T> source, int threads, Func<T, Task<bool>> action, int retries, string method)
    {
        object lockObj = new object();
        int index = 0;

        return new Action(async () =>
        {
            while (true)
            {
                T item;
                lock (lockObj)
                {
                    if (index < source.Count)
                    {
                        item = source[index];
                        index++;
                    }
                    else
                        break;
                }

                int retry = retries;
                while (retry > 0)
                {
                    try
                    {
                        bool res = await action(item);
                        if (res)
                            retry = -1;
                        else
                            //sleep if not success..
                            Thread.Sleep(200); …
Run Code Online (Sandbox Code Playgroud)

c# action task

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

jquery模拟点击html锚标签

我一直在尝试模拟点击标签,这不能正常工作,因为我需要它.我的锚标签看起来像这样

<a href="/dl/pic.jpg" target="_blank" download="file.jpg"> Download this pic </a>
Run Code Online (Sandbox Code Playgroud)

一个常规$("a").click()trigger('click')不会在这里工作.任何想法? 编辑 我需要触发点击这个Anchor标签并导致文件下载,我不需要添加另一个onClick功能.

jquery click

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

CASQL中的TSQL,SELECT语句为COUNT

我找不到任何解释为什么我的错误思考.我想做的事情如下:

SELECT 
   COUNT(CASE WHEN (SELECT [Number] FROM [SOMETABLE] WHERE [id] = [GivenId]) = 3 THEN 1 ELSE 0 END) 
FROM [SomeOtherTable]
Run Code Online (Sandbox Code Playgroud)

我一直在

无法对包含聚合或子查询的表达式执行聚合函数.

很高兴理解为什么我不能做我想做的事情.

也很高兴知道我可以做什么不同以获得相同的结果.

t-sql sql-server select subquery aggregate-functions

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

c#方法继承直接子

我有以下课程:

public class Essentials 
{
    public void DoSomething() 
    {
         //doing base stuff...
    }
}

public class NetworkEssentials : Essentials 
{
    public void DoNetworkSomething()
    {
        //doing something
    }
}

public class someClass : NetworkEssentials
{
    public void DoSomeSomething()
    {
        base.DoSomething(); //The thing I would like to prevent, as to block this from happening.
//attention: i dont want to change methods names so it will call the first parent, i still want to maintain a different method names to each class type …
Run Code Online (Sandbox Code Playgroud)

c# oop

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

具有新类型约束的泛型构造函数

我有两种类型的对象,数据库模型和普通系统模型。

我希望能够将模型转换为数据库模型,反之亦然。

我有我写的以下方法:

 public static E FromModel<T, E>(T other) 
            where T : sysModel
            where E : dbModel
{
     return new E(other);
}
Run Code Online (Sandbox Code Playgroud)

基本上都sysModeldbModel都是抽象的。

dbModel 有很多继承类,它们都有复制构造函数。

我收到:

无法创建类型参数“E”的实例,因为它没有 new() 约束

我知道从技术上讲,有时我没有为 的每个值提供匹配的构造函数T,至少调试器知道这是什么。

我也尝试添加where E : dbModel, new()约束,但它只是无关紧要。

有没有办法使用泛型方法和使用参数将模型转换为另一个模型?

谢谢。

c# generics type-constraints

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

在验证上下文中使用 HttpRequest

在 .net Framework <= 4.7.2 中,在验证上下文中,您可以HttpRequest通过访问HttpContext.

例如,我有一段代码如下所示:

public sealed class AccessValidator : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext context)
    {
        // validate stuff, if all true -> yield ok.

        // if is not valid
        var request = HttpContext.Current.Request;

        // store/log the request payload.
    }

}
Run Code Online (Sandbox Code Playgroud)

使用 .net Core 2.1 时无法做到这一点。我看到了一个关于注入IHttpContextAccessor什么的帖子,但它几乎在每个地方都暴露了请求。

由于这是我服务器的外部库,我希望它不依赖于服务器代码注入,因为那样会产生我不想成为的依赖。

有没有已知的方法来处理这个或解决这个问题?

c# validation httpcontext .net-core asp.net-core

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

C# Visual Studio 2013 抑制“类从未实例化”

我有一个接受 HttpPost 通信的 Web api 项目。

控制器的方法始终接受单个经过验证的对象。

例如:

public sealed class NumbersRequest
{
    [NumberOne]
    public string Number1 { get; set; }

    [NumberTwo]
    public string Number2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

由于我从未声明过NumbersRequest req = new NumbersRequest()并且它们仅充当请求对象,因此我得到了

类永远不会被实例化

我怎样才能抑制警告?(它更像是绿色下划线..)也许是带有注释的东西?

谢谢。

c# suppress-warnings

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

基于点数组的 C# MongoDB 排名

使用最新的 C# mongodb 驱动程序和 .NET 4.5.1。

我想在玩家之间进行一些定制的比赛。假设我有以下模型。

public sealed class PlayerPoints
{
    [BsonId]
    public ObjectId PlayerId;

    public DateTime CreateDate;

    public int Points;
    public int[] SeasonalPoints;

}
Run Code Online (Sandbox Code Playgroud)

我希望能够在特定SeasonalPoints索引之间获得玩家的排名。

一个例子:

 {PlayerId : someId1, CreateDate : <someCreateDate>, Points : 1000, SeasonalPoints : [100,100,100,100,100,100,100,100,100,100,100]}
 {PlayerId : someId2, CreateDate : <someCreateDate>, Points : 1000, SeasonalPoints : [100,100,100,100,100,100,100,100,50,150,100]}
 {PlayerId : someId3, CreateDate : <someCreateDate>, Points : 1100, SeasonalPoints : [200,100,100,100,100,100,100,100,0,0,300]}
Run Code Online (Sandbox Code Playgroud)

请注意,这里有 10 个季节。我正在搜索一个查询,该查询根据玩家的排名返回排序的玩家列表。排名由提供的索引之间的点的总和设置。

如果我查询第 9 季到第 10 季的排名,那么 someId3 是第一个,someId2 之后,someId1 是最后一个。如果我在第 7-9 季查询排名,那么 …

c# mongodb mongodb-.net-driver

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

Angular 7向基元添加扩展方法

我想为基元添加一些方法。我有以下文件:

string-extension.ts:

interface String {
    isNullOrEmpty(this: string): boolean;
}

String.prototype.isNullOrEmpty = function (this: string): boolean {
    return !this;
};
Run Code Online (Sandbox Code Playgroud)

我有一个包含以下代码的组件:

constructor () {
    let a = "asd";
    alert(a.isNullOrEmpty());
}
Run Code Online (Sandbox Code Playgroud)

没有导入被添加到顶部。当我运行客户端时,它在该行崩溃。

a.isNullOrEmpty is not a function
Run Code Online (Sandbox Code Playgroud)

当我检查代码时,我发现我的string-extension.ts文件未包含在其中。我对C#中的概念非常熟悉,但对TypeScript不太了解,因此,如果您需要更多信息,请提供。

谢谢。

extension-methods typescript-typings angular angular7

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

C ++无法解析变量BOOST_FOREACH

我试图使用Boost库,我复制了整个boost文件夹,除了docs,libs,more,status,tools文件夹。

当我尝试使用下面的代码块时,我的编译器无法识别2件事情。

vector<string>* read(string & filename)
{


 // populate tree structure pt
    using boost::property_tree::ptree;
    ptree pt;
    read_xml(filename, pt);
    ptree tree;

vector<string> *ans = new vector<string>();

BOOST_FOREACH( ptree::value_type &v, pt.get_child("computer"))
{
    string name = v.first.get<string>("name");
    string OS = v.first.get<string>("OS");

    ans->push_back(name);
    ans->push_back(OS);
}

return ans;
}
Run Code Online (Sandbox Code Playgroud)
  1. 未在此范围内声明“ BOOST_FOREACH”
  2. 无法解析结构成员“ value_type”

我知道以下包含行应该足够了:

#include <iostream>
#include <vector>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,请询问。TIA

编辑

添加include foreach.hpp后,即时通讯功能得到:

这个问题

c++ boost clion

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

如何通过smtp发送邮件gmail?

我在尝试执行此邮件发送方法时收到异常。

{"语法错误,命令无法识别。服务器响应为:"}

我的代码:

public async static Task SendExceptionMail(Exception e)
    {
        try
        {
            //TODO: fill..

            var message = new MailMessage();
            message.To.Add("other_email_than_my_email@gmail.com");
            message.From = new MailAddress("my_email_in_gmail@gmail.com");

            message.Subject = "Server Exception Occured";

            StringBuilder sb = new StringBuilder();
            sb.AppendLine("Exception occured. Stack trace:");
            sb.AppendLine(e.StackTrace);
            sb.AppendLine("");
            sb.AppendLine("Time: " + DateTime.UtcNow);

            message.Body = sb.ToString();
            message.IsBodyHtml = false;
            message.BodyEncoding = UTF8Encoding.UTF8;

            using (var smtpClient = new SmtpClient())
            {
                smtpClient.Credentials = new System.Net.NetworkCredential("my_email_in_gmail@gmail.com", "very_very_complicated_password_with_numbers_and_signs");
                smtpClient.Host = "smtp.gmail.com";
                smtpClient.Port = 465;
                smtpClient.EnableSsl = true;
                smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
                //smtpClient.UseDefaultCredentials = false; …
Run Code Online (Sandbox Code Playgroud)

c# smtp

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

C#覆盖Dictionary ContainsKey

我找不到任何适当的代码来做我需要的东西.

我正在使用,Dict.ContainsKey但由于我总是创建我需要寻找的密钥的事实,我总是得到ContainsKey假(因为hashKey是不同的,我创建我想要一直检查的密钥).

在这种情况下,有人可以建议如何覆盖包含键或如何处理键比较?我的字典看起来像 Dictionary<someObj, int>

public class someObj
{
    public int someobjParam {get;set;}
    public int someobjParamTwo {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

c# dictionary overriding

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

c#mongodb区分大小写搜索

我有一个集合,我在其中存储用户的电子邮件和密码。

我显然不想要求用户插入他的电子邮件区分大小写并且与他第一次注册时完全一样。

我正在使用 mongodb 2.0 c# 驱动程序,我在重复它,因为我看到了用正则表达式编写的查询的解决方案,但恐怕我不能在这里使用它。

我的查询看起来像

var filter = Builders<ME_User>.Filter.And(
                                 Builders<ME_User>.Filter.Eq(u => u.Email, email),
                                 Builders<ME_User>.Filter.Eq(u => u.Password, password));
            ME_User foundUser = null;
            var options = new FindOptions<ME_User>
            {
                Limit = 1
            };
            using (var cursor = await manager.User.FindAsync(filter, options))
            {
                while (await cursor.MoveNextAsync())
                {
                    var batch = cursor.Current;
                    foreach (ME_User user in batch)
                        foundUser = user;
                }
            }
Run Code Online (Sandbox Code Playgroud)

我有一个混乱的问题,杀了我,但我不能让自己用小写再次保存这些数据,并且有 2 个相同内容的副本。另外,我希望电子邮件能够像用户插入的那样完全保存。

c# mongodb mongodb-.net-driver

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