如何以编程方式确定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) 以下方法是否确保一次只能有一个线程读取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) 尝试调用将枚举作为输入参数的 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) 我需要拆分一行文字
我需要一个正则表达式来帮助我解决上述问题.
我有限的正则表达式技能的最新尝试:
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)
预期输出应如下(基于提供的样本数据字符串):
使用下面的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返回不需要的格式,我将不胜感激
我有这个数组:
char[] signOfDecimal = {',', '.'};
Run Code Online (Sandbox Code Playgroud)
我正在尝试在我的字符串中找到这两个字符之一的位置:
locationOfDotInRate = myString.IndexOf(signOfDecimal[0], signOfDecimal[1]);
Run Code Online (Sandbox Code Playgroud)
基本上我正在尝试检查我的字符串中可能出现的其中一个字符,但它不起作用.我这样做的原因是因为我的字符串有时包含'.' 要么 ','.