小编Bos*_*oss的帖子

KeyValuePair <string,object> Object Enumerable?

如何以编程方式确定Key值对中的对象是否可枚举?

我需要知道值字段中的对象是List还是Array.我应该能够确定对象是什么类型的可枚举类型(例如字符串列表或一组int)

List<KeyValuePair<string, object>> lKVP = new List<KeyValuePair<string, object>>();
List<string> lS = new List<string> { "s1", "s2" };

lKVP.Add(new KeyValuePair<string, object>("PassPhrase", "E92D8719-38A6-0000-961F-0E66FCB0A363"));
lKVP.Add(new KeyValuePair<string, object>("Test", lS));
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

1)

foreach(KeyValuePair<string,object> kvp in _ParameterReplacement)
{
    if(kvp.Value is Enumerable)
    {
        Console.WriteLine("Yes");
    }
    else
    {
        Console.WriteLine("No");
    }
 }
Run Code Online (Sandbox Code Playgroud)

2)

foreach(KeyValuePair<string,object> kvp in _ParameterReplacement)
{
    if(kvp.Value.GetType() == typeof(IEnumerable<object>))
    {
        Console.WriteLine("Yes");
    }
    else
    {
        Console.WriteLine("No");
    }
 }
Run Code Online (Sandbox Code Playgroud)

c# key-value

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

锁定创建ID的对象

以下方法是否确保一次只能有一个线程读取ID?我有一个使用以下方法的并行进程,我需要它来返回唯一ID.不幸的是,我无法改变ID的结构方式.

private static int Seq = 0;
private static long dtDiff = 0;
private static object thisLock = new object();
private static object BuildClientID(string Code)
{
    lock (thisLock)
    {
        object sReturn = "";
        Seq++;
        dtDiff++;                
        if (Seq == 1000)
        {
            Seq = 0;
            dtDiff = DateAndTime.DateDiff(DateInterval.Second, DateTime.Parse("1970-01-01"), DateTime.Now);
         }
         sReturn = dtDiff.ToString() + Code + Seq.ToString("000");
            return sReturn;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# locking

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

带有枚举输入参数的 Webapi post 方法

尝试调用将枚举作为输入参数的 Web API 方法时,为什么会出现以下屏幕截图中的错误?我该如何解决?

messageDestinationType无论我做什么,它似乎始终为空...

我更愿意将输入类型保留为枚举。我刚开始使用 web api,无法理解当 WCF 完美地处理这种情况时,这有多么困难

[JsonConverter(typeof(StringEnumConverter))]    
public enum MessageDestinationType
{
    None = 0,
    [EnumMember(Value = "SMS")]
    SMS = 1,
    [EnumMember(Value = "Email")]
    Email = 2,
    PushNotification = 3,
    UXP = 4,
    IntermediaryApp = 5,
    YouthApp = 6
}



    [HttpPost, Route("ReadClientMessagesC")]
    public IHttpActionResult ReadClientMessagesC([FromBody]MessageDestinationType messageDestinationType)
    {
        var request = new ClientInboxRequest
        {
            Gcn = Gcn,
            ClientIpAddress = ClientIpAddress,
            CallingApplication = CallingApplication.Name,
            CallingApplicationVersion = CallingApplication.Version,
            CookieString = CookieString,
            HasPbUk = HasPbUk,
            HasIamIms = HasIamIms,
            HasPbZa = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api2

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

拆分一行具有键值对的文本,其中值可以为空

我需要拆分一行文字

  1. 传递指令的一般语法是||| name | value || name | value || ... .. |||
  2. 每个交货指令以3个管道字符开始和结束 - |||
  3. 传递指令是由单个管道分隔的一组名称/值对,例如名称|值
  4. 每个名称值对由2个管道字符||分隔
  5. 名称和值可能不包含管道符
  6. 任何一对的值可以是空字符串.

我需要一个正则表达式来帮助我解决上述问题.

我有限的正则表达式技能的最新尝试:

string SampleData = "|||env|af245g||mail_idx|39||gen_date|2016/01/03 11:40:06||docm_name|Client Statement (01.03.2015?31.03.2015)||docm_cat_name|Client Statement||docm_type_id|9100||docm_type_name|Client Statement||addr_type_id|1||addr_type_name|Postal address||addr_street_nr|||addr_street_name|Robinson Road||addr_po_box|||addr_po_box_type|||addr_postcode|903334||addr_city|Singapore||addr_state|||addr_country_id|29955||addr_country_name|Singapore||obj_nr|10000023||bp_custr_type|Customer||access_portal|Y||access_library|Y||avsr_team_id|13056||pri_avsr_id|||pri_avsr_name|||ctact_phone|||dlv_type_id|5001||dlv_type_name|Channel to standard mail||ao_id|14387||ao_name|Corp Limited||ao_title|||ao_mob_nr|||ao_email_addr||||??";
string[] Split = Regex.Matches(SampleData, "(\|\|\|(?:\w+\|\w*\|\|)*\|)").Cast<Match>().Select(m => m.Value).ToArray();
Run Code Online (Sandbox Code Playgroud)

预期输出应如下(基于提供的样本数据字符串):

  1. ENV | af245g
  2. mail_idx | 39
  3. gen_date | 2016/01/03 11:40:06
  4. docm_name |客户声明(01.03.2015-31.03.2015)
  5. docm_cat_name |客户声明
  6. docm_type_id | 9100
  7. docm_type_name |客户声明
  8. addr_type_id | 1
  9. addr_type_name |邮政地址
  10. addr_street_nr |
  11. addr_street_name |罗宾逊道
  12. addr_po_box |
  13. addr_po_box_type |
  14. addr_postcode | 903334 …

c# regex

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

DateTime.TryParseExact不稳定的结果

使用下面的DateTime.TryPaseExact方法可以在预期的时候给出不同的输出.

我从以下代码返回以下格式:

2014-02-10 18:32:37
1402-10-18 17:23:00 (which is clearly incorrect)
Run Code Online (Sandbox Code Playgroud)

我如何才能获得yyyy-MM-dd HH:mm:ss返回的格式?

static readonly string[] DateFormats = new string[] { "yyMMddHHmm", "yyyyMMddHHmm", "yyMMddHHmmss", "yyyy-MM-dd HH:mm:ss" };

DateTime date;                                    
DateTime.TryParseExact("140211090915", DateFormats, CultureInfo.InvariantCulture,
                               DateTimeStyles.AssumeLocal, out date);
Run Code Online (Sandbox Code Playgroud)

此外,如果有人可以解释为什么此140211084947输入返回预期的格式并140211090915返回不需要的格式,我将不胜感激

c# datetime

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

使用indexOf在字符串中查找两个字符之一

我有这个数组:

char[] signOfDecimal = {',', '.'};
Run Code Online (Sandbox Code Playgroud)

我正在尝试在我的字符串中找到这两个字符之一的位置:

locationOfDotInRate = myString.IndexOf(signOfDecimal[0], signOfDecimal[1]);
Run Code Online (Sandbox Code Playgroud)

基本上我正在尝试检查我的字符串中可能出现的其中一个字符,但它不起作用.我这样做的原因是因为我的字符串有时包含'.' 要么 ','.

c# backend

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

标签 统计

c# ×6

asp.net-web-api2 ×1

backend ×1

datetime ×1

key-value ×1

locking ×1

regex ×1