小编Mar*_*ell的帖子

XML反序列化具有空值的日期

我从一个供应商那里得到一个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)

.net xml serialization

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

javascript继承

我知道有很多类似的问题都有很多很好的答案.我试着看一下经典的继承方法,或者那些闭包方法等.不知怎的,我认为它们或多或少是"黑客"方法,因为它并不是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)

javascript inheritance

8
推荐指数
2
解决办法
6547
查看次数

将Type动态传递给<T>

看,我有这样的情况......

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等等

现在我可以得到TypeList<>像这样

Type genericType = obj.GetType().GetGenericArguments()[0];
Run Code Online (Sandbox Code Playgroud)

但不能像这样传递它

string xml = GetXML<genericType>(myRoledata);
Run Code Online (Sandbox Code Playgroud)

反正有我在其中可以通过任何genericTypesGetXML方法?

c# generics list

8
推荐指数
3
解决办法
2万
查看次数

您是否可以说服DataContext将列视为总是脏的?

有没有办法强制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(),尽管可能就像容易抛出错误一样).

我真正希望能够做的是"总是更新这个专栏,即使它不脏" - 这可能吗?

.net c# linq-to-sql

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

通过IoC影响具有属性的AOP; 代码味或优雅?

我目前正在使用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扫描中添加自定义"约定" (非常简单),它可以发现一个或多个方法被装饰用于缓存,并自动将生成的缓存装饰器注入到该类型的管道中(生成缓存)来自接口/方法名称和参数值的键).

从好的方面来说,它增加了缓存非常无痛 - 只需稍微装饰一下界面; 但是代码味道是什么?和/或我是否重复了已经解决的问题?

.net c# structuremap aop inversion-of-control

8
推荐指数
2
解决办法
1258
查看次数

flush()在Firefox 4中不起作用

我注意到了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内容.

php firefox flush

8
推荐指数
2
解决办法
2548
查看次数

为什么只有一个语句的方法需要大括号?

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)

具有以下一行的方法为什么不允许相同?有技术原因吗?

c# methods formatting braces

8
推荐指数
3
解决办法
1240
查看次数

如何创建二维动态长度数组?

我想创建一个二维数组,而不知道第一维的大小.

例如,当我创建一个数组时,我有一个未知的行数.每行代表一个帐户.每行退出4列:ID,名称,用户,密码

我尝试使用锯齿状阵列,但不可能:

int[][] jaggedArray = new int[][3];
Run Code Online (Sandbox Code Playgroud)

我也寻找ArrayList,实现与clases和一点关于泛型.

我正在寻找一种可以轻松操作数据的解决方案:

  • 添加到列表,选择,输入元素
  • 在数据库查询中使用元素
  • 在其他功能中用作参数

因为我是.NET(C#)的新手,请为我提供代码解决方案,而不是通用(寻找)解决方案

c# arrays arraylist dynamic

8
推荐指数
2
解决办法
2万
查看次数

为什么fastmember看起来不比这里的反射更快?

(这是通过推特上的一个问题,经许可再次询问)

我正在尝试快速验证一些对象(以测试空值),我认为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)

.net fastmember

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

Google Protocol Buffers Serialization挂起写入1GB +数据

我正在使用协议缓冲区序列化序列化大型数据集.当我的数据集包含400000个大小约为1 GB的自定义对象时,序列化将在3~4秒内返回.但是当我的数据集包含大约1.2 GB的450000个组合大小的对象时,序列化调用永远不会返回并且CPU会不断消耗.

我正在使用Protocol Buffers的.NET端口.

.net c# serialization protocol-buffers protobuf-net

7
推荐指数
2
解决办法
1880
查看次数