我从一个供应商那里得到一个xml文件,其中有一些"空"日期,如下所示:
<UpdatedOn/>
<DeletedOn/>
Run Code Online (Sandbox Code Playgroud)
通过定期反序列化,它失败了:
内部异常:System.FormatException:String未被识别为有效的DateTime.
任何想法如何处理这个?
我的字段已标记为默认值DateTime:
[System.Xml.Serialization.XmlElementAttribute(DataType="date")]
[System.ComponentModel.DefaultValueAttribute(typeof(System.DateTime), "1901-01-01")]
public System.DateTime UpdateOn{...}
Run Code Online (Sandbox Code Playgroud) 我知道有很多类似的问题都有很多很好的答案.我试着看一下经典的继承方法,或者那些闭包方法等.不知怎的,我认为它们或多或少是"黑客"方法,因为它并不是javascript的设计目的.(如果我错了,欢迎任何人纠正我).好吧,只要它有效,我满足于经典的继承模式,如:
PARENTClass = function (basevar) { do something here; };
PARENTClass.prototype = { a: b, c: d}; // prototype is auto gen
// Inheritance goes here
CHILDClass = function (childvar) { do something; };
CHILDClass.prototype = new PARENTClass(*1); // Actual inheritance to the prototype statement
// Instance
CHILDInstance = new CHILDClass(whatever);
Run Code Online (Sandbox Code Playgroud)
上面是某种方式,我理解JS的继承.但是我不知道如何实现的一个场景是,如果我想做一些初始化DURING对象创建(即在构造函数中),并且可以立即使用新对象....我对问题的说明可能不会太清楚了,所以让我用下面的C#Psuedo来解释我想做的事情:
class PARENT {
public PARENT (basevar) { ... }
}
class CHILD : PARENT {
public CHILD (basevar) : PARENT (basevar) // constructor of child, and call parent …Run Code Online (Sandbox Code Playgroud) 看,我有这样的情况......
object myRoledata = List<Roles>() --> (some list or Ienumerable type)
Run Code Online (Sandbox Code Playgroud)
现在我有一个通用的方法,可以创建一个XML对象List<T>- 像这样......
public string GetXML<T>(object listdata)
{
List<T> objLists = (List<T>)Convert.ChangeType(listData, typeof(List<T>));
foreach(var obj in listdata)
{
//logic to create xml
}
}
Run Code Online (Sandbox Code Playgroud)
现在为了运行这个方法,我必须这样做:
string xml = GetXML<Roles>(myRoledata);
Run Code Online (Sandbox Code Playgroud)
现在我不知道Type可能会传给我的GetXML方法.我有一个方法,可以调用GetXML不同Type的例如Roles,Users等等
现在我可以得到Type内List<>像这样
Type genericType = obj.GetType().GetGenericArguments()[0];
Run Code Online (Sandbox Code Playgroud)
但不能像这样传递它
string xml = GetXML<genericType>(myRoledata);
Run Code Online (Sandbox Code Playgroud)
反正有我在其中可以通过任何genericTypes对GetXML方法?
有没有办法强制LINQ-to-SQL将列视为脏?在全球范围内就够了....
基本上,我在使用L2S与遗留系统进行一些审计代码时遇到了问题,想象一下:
var ctx = new SomeDataContext(); // disposed etc - keeping it simple for illustration
var cust = ctx.Customers.First(); // just for illustration
cust.SomeRandomProperty = 17; // whatever
cust.LastUpdated = DateTime.UtcNowl;
cust.UpdatedBy = currentUser;
ctx.SubmitChanges(); // uses auto-generated TSQL
Run Code Online (Sandbox Code Playgroud)
这很好,但是如果同一个用户连续两次更新它,那么它UpdatedBy是一个NOP,而TSQL将是(粗略地):
UPDATE [dbo].[Customers]
SET SomeRandomColumn = @p0 , LastUpdated = @p1 -- note no UpdatedBy
WHERE Id = @p2 AND Version = @p3
Run Code Online (Sandbox Code Playgroud)
在我的情况下,问题是目前所有表都有一个带括号审计触发器,它检查审计列是否已更新,如果不是假设开发人员有错(替换SUSER_SNAME(),尽管可能就像容易抛出错误一样).
我真正希望能够做的是"总是更新这个专栏,即使它不脏" - 这可能吗?
我目前正在使用StructureMap,通常使用基于约定的(Scan())自动配置,我希望将基于装饰器的缓存添加到管道中.
如果我手动配置它很好,但是当你获得大量依赖时Scan()它就是这么方便 ...我正在注意接口上的缓存建议,例如:
public interface IFoo {
[CacheDuration(20)] // cache for 20 minutes
string[] DoSomethingReusable();
SomeType DoSomethingNonReusable(int key); // not cached
}
Run Code Online (Sandbox Code Playgroud)
通过在StructureMap扫描中添加自定义"约定" (非常简单),它可以发现一个或多个方法被装饰用于缓存,并自动将生成的缓存装饰器注入到该类型的管道中(生成缓存)来自接口/方法名称和参数值的键).
从好的方面来说,它增加了缓存非常无痛 - 只需稍微装饰一下界面; 但是代码味道是什么?和/或我是否重复了已经解决的问题?
我注意到了php flush(); 在Firefox 4 beta 7中不起作用,因为它适用于3.6.12.
我最近安装了firefox 4 beta 7,当调用flush()时,内容不会立即刷新.它曾经在3.6.12中正常工作.还有什么东西可以为我提供冲洗功能.
我试过了
flush();
@ob_flush();
Run Code Online (Sandbox Code Playgroud)
我还在页面顶部尝试了以下代码.
@apache_setenv('no-gzip', 1);
@ini_set('zlib.output_compression', 0);
@ini_set('implicit_flush', 1);
for ($i = 0; $i < ob_get_level(); $i++) { ob_end_flush(); }
ob_implicit_flush(1);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我在XAMPP/Apache上使用php.谢谢.
我发现将内容类型设置为text/plain工作,但它只输出纯文本而不是html内容.
public void Finalise()
ProcessFinalisation(true);
Run Code Online (Sandbox Code Playgroud)
不编译,但正确的版本:
public void Finalise()
{
ProcessFinalisation(true);
}
Run Code Online (Sandbox Code Playgroud)
编译好(当然).
如果以下代码只有一行,如果我没有括号,我被允许:
if(true)
CallMethod();
Run Code Online (Sandbox Code Playgroud)
具有以下一行的方法为什么不允许相同?有技术原因吗?
我想创建一个二维数组,而不知道第一维的大小.
例如,当我创建一个数组时,我有一个未知的行数.每行代表一个帐户.每行退出4列:ID,名称,用户,密码
我尝试使用锯齿状阵列,但不可能:
int[][] jaggedArray = new int[][3];
Run Code Online (Sandbox Code Playgroud)
我也寻找ArrayList,实现与clases和一点关于泛型.
我正在寻找一种可以轻松操作数据的解决方案:
因为我是.NET(C#)的新手,请为我提供代码解决方案,而不是通用(寻找)解决方案
(这是通过推特上的一个问题,经许可再次询问)
我正在尝试快速验证一些对象(以测试空值),我认为FastMember可能会有所帮助 - 但是,通过下面显示的测试,我看到了更糟糕的性能.难道我做错了什么?
public class ValidateStuffTests
{
[Test]
public void Benchmark_speed()
{
var player = CreateValidStuffToTest();
_stopwatch.Start();
CharacterActions.IsValid(player);
_stopwatch.Stop();
Console.WriteLine(_stopwatch.Elapsed);
Assert.Less(_stopwatch.ElapsedMilliseconds, 10, string.Format("IsValid took {0} mileseconds", _stopwatch.Elapsed));
}
[Test]
public void When_Benchmark_fastMember()
{
var player = CreateValidStuffToTest();
_stopwatch.Start();
CharacterActions.IsValidFastMember(player);
_stopwatch.Stop();
Assert.Less(_stopwatch.ElapsedMilliseconds, 10, string.Format("IsValid took {0} mileseconds", _stopwatch.Elapsed));
}
}
public static class ValidateStuff
{
public static bool IsValid<T>(T actions)
{
var propertyInfos = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var property in propertyInfos)
{
if (property.GetValue(actions, null) == null)
return false; …Run Code Online (Sandbox Code Playgroud) 我正在使用协议缓冲区序列化序列化大型数据集.当我的数据集包含400000个大小约为1 GB的自定义对象时,序列化将在3~4秒内返回.但是当我的数据集包含大约1.2 GB的450000个组合大小的对象时,序列化调用永远不会返回并且CPU会不断消耗.
我正在使用Protocol Buffers的.NET端口.
c# ×6
.net ×5
aop ×1
arraylist ×1
arrays ×1
braces ×1
dynamic ×1
fastmember ×1
firefox ×1
flush ×1
formatting ×1
generics ×1
inheritance ×1
javascript ×1
linq-to-sql ×1
list ×1
methods ×1
php ×1
protobuf-net ×1
structuremap ×1
xml ×1