如何在C#中存储之前validation.csv文件?

我有一些.csv文件,我在存储到数据库之前解析。 我想使应用程序更健壮,并在保存到数据库之前对.csv文件执行validation。 所以我问你们,如果你们有一些很好的链接,或代码示例,模式或建议如何做到这一点? 我将在下面粘贴我的.csv文件的示例。 .csv文件中的不同数据字段由制表符分隔。 每个新的数据行都在一个新行上。 我一直在思考我应该validation的内容,并提出了下面的列表(我非常愿意接受其他建议,以防你有什么想法应该添加到列表中?) Correct file encoding. That file is not empty. Correct number of lines/columns. correct number/text/date formats. correct number ranges. 这就是我的.csv文件的样子(带有两行的文件,一行上的数据由制表符分隔)。 4523424 A123456 GT-P1000 mobile phone Samsung XSD1234 135354191325234 345353 A134211 A8181 mobile phome HTC S4112-ad3 111911911932343 上面的字符串表示forms如下: “4523424\tA123456\tGT-P1000\tmobile phone\tSamsung\tXSD1234\t135354191325234\r \n345353\tA134211\tA8181\tmobile phome\tHTC\tS4112-ad3\t111911911932343\r\n” 那么你有没有关于如何在C#中做到这一点的好的设计,链接,模式,代码示例等?

在将策略定义与执行分离时,了解Polly策略的语义

对于Polly,我想将我的策略定义和该策略的执行分为两个不同的语句,如: // Policy definition var policy = Policy .HandleResult(predicate) .Retry(2); // Policy execution policy.ExecuteAndCapture(() => { DoSomethingAndReturnAnIRestResponse(); }; 我想这样做,所以我可以更好地重用我的重试策略,例如用于dependency injection。 我试图了解在以这种方式拆分策略和执行时是否有任何考虑因素,例如,如果存在任何可能未从策略定义到policy对象的“状态”(缺少更好的术语)执行。 沿着这些思路,我注意到当我以上述方式使用Polly的ExecuteAndCapture()时,某些属性(与捕获与ExecuteAndCapture()相关联的最终exception/结果相关的属性)未显示在policy对象上。 根据文档( 此处和此处 ),完成以下政策后: var policy = Policy .HandleResult(predicate) .Retry(2) .ExecuteAndCapture(() => { DoSomethingAndReturnAnIRestResponse(); }); ……你应该回来: PolicyResult.Outcome PolicyResult.FinalException PolicyResult.ExceptionType PolicyResult.Result 确实发生这种情况,然后ExecuteAndCapture()与策略定义在同一语句中。 但是,在将策略定义与执行分离时,这些属性不可用。 我天真地认为他们会出现在现有的policy对象上,但他们没有: 看来我需要创建一个新的变量赋值才能访问这些属性: 有什么顾虑吗?

Mongodb认证

如何通过官方c#驱动程序使用mongodb身份validation? 除了内部成员之外,我找不到任何API方法进行身份validation。

序列化包含BitmapImage的类的方法:使用2inheritance的类?

当我的应用程序关闭时,我想序列化一些数据,使其在下次使用应用程序时持久化。 我选择使用Newtonsoft.JsonConverter序列化这些数据。 但是,我的class级中有一个BitmapImage,它无法序列化。 我有点困惑于此,因为我没有找到一个解决方案来保持我的BitmapImage进入我的类(我需要保留它)并能够序列化这个类。 我试图创建一个包含BitmapImage的inheritance类,但我不允许从我的基类创建一个隐式运算符。 我想在我的类中有一个对象,它可以用作Image绑定的源,并且能够序列化这个类。

当从Delphi传递给C#作为函数参数时,空字符串变为null

我有一个原生的Delphi exe,它通过COM interop调用C#dll。 以下是演示此问题的最简单案例: delphi: IClass1 = interface(IDispatch) [‘{B29BAF13-E9E4-33D7-9C92-FE28416C662D}’] function Test(const aStr: WideString): WideString; safecall; end; var obj: IClass1; s: string; begin obj := CoClass1.Create as IClass1; s := obj.Test(”); // Returns ‘[null]’ end; C#: [ComVisible(true)] public interface IClass1 { string Test(string aStr); } [ComVisible(true)] public class Class1 : IClass1 { public string Test(string aStr) […]

从AssetBundle获取Hash128以获取Caching.IsVersionCached函数

我想知道AssetBundle已经在缓存中。 这通常使用Caching.IsVersionCached函数完成。 Unity 2017.1不再支持Caching.IsVersionCached(string url, int version)函数重载。 Unity 2017.3建议我使用Caching.IsVersionCached(string url, Hash128 hash)重载。 我不知道Hash128是什么以及如何获取和使用它。 什么是Hash128用于如何从AssetBundle获取它? 谢谢您的回答。 但我无法解决我的问题。 这是我的代码 for(int i = 0; i <assetInfoList.Count; i ++){ while (!Caching.ready) yield return null; string url = GetUrl(assetInfoList[i].assetbundle_name); string keyName = url + assetInfoList[i].version_no.ToString(); using (UnityWebRequest request = UnityWebRequest.GetAssetBundle(url,(uint)assetInfoList[i].version_no, 0)) { if (Caching.IsVersionCached(url, assetInfoList[i].version_no) == true) continue; if (i […]

在c#中将值从一个表单传递到另一个表单

我必须在C#中将id从一个表单传递到另一个表单。 我无法做到这一点。 C#代码是: private void btnedit_Click(object sender, EventArgs e) { foreach (DataGridViewRow a in dataGridViewUnPaidList.Rows) { if (a.Cells[0].Value != null) { Convert.ToInt64(a.Cells[1].Value); // i have to pass this id in AddInvoice() form AddInvoice ad = new AddInvoice(); ad.Show(); NonPaideData non = new NonPaideData(); non.Hide(); } else { MessageBox.Show(“Now Row Is Selected”); } } } 谁能告诉我我做错了什么?

如何/为什么值类型可以从引用类型派生?

在.NET ,所有值类型都从名为System.ValueType的类inheritance。 System.ValueType是一个类,因此它是一个reference type 。 我的问题是value type如何以及为什么可能从reference type派生?

WPF将控件的图像复制到位图

我正在使用第三方控件,我想从控件创建一个位图(放在剪贴板上或保存到png)。 我已经尝试使用RenderBitmapTarget ,但它只会复制控件,因为它在屏幕上呈现(我的网格比屏幕大)。 我的RenderBitmapTarget代码如下所示: RenderTargetBitmap rtb = new RenderTargetBitmap((int)control.ActualWidth, (int)control.ActualHeight, 96, 96, PixelFormats.Pbgra32); rtb.Render(control); PngBitmapEncoder png = new PngBitmapEncoder(); png.Frames.Add(BitmapFrame.Create(rtb)); MemoryStream stream = new MemoryStream(); png.Save(stream); Image image = Image.FromStream(stream); 我已经尝试指定一个更大的尺寸(在RenderTargetBitmap构造函数中,并为控件指定新的宽度/高度,但两者都在较大的canvas上产生了相同的图像。 有什么想法吗?

LINQ除非按预期工作

我有一些方法可以返回我在过去360天,180天和90天内未查询过的联系人列表。 在过去361天内未被查询的一个人也将在180天和90天的查询中返回。 我以为我可以用Except做到这一点,但那肯定不行, public class Contacto { public int IdContacto { get; set; } public string PrimerApellido { get; set; } public string PrimerNombre { get; set; } public string SegundoApellido { get; set; } public string SegundoNombre { get; set; } public object Telefonos { get; set; } public int TipoTelefono { get; set; […]