小编Bob*_*son的帖子

实施非陆地日历

当我在寻找另一个问题的解决方案时,我发现自己想知道是否可以使用.NET的Calendar类来实现不基于地球惯例的日历.

例如,火星日比地球上的一天长约2.7%:

航天器着陆器项目迄今使用的惯例是使用24小时"火星时钟"跟踪当地太阳时,其中小时,分钟和秒比其标准(地球)持续时间长2.7%.

有没有实施什么好办法MarsCalendar,这样第二的长度是不同的标准GregorianCalendar,从而能够使用DateTime基于它的对象为所有的标准AddDays(),AddHours()等等的功能呢? (注意:理想情况下,解决方案 - 如果存在的话 - 将适用于任何形式的行星物体,可以定义一致长度的"1天"和"1年".火星是一个很好的例子,尽管)

.net c# datetime calendar

88
推荐指数
1
解决办法
1402
查看次数

List.All()和List.TrueForAll()之间的区别

在操作.All().TrueForAll()操作之间是否存在实际差异List?我知道这.All()是其中的一部分IEnumerable,为什么要添加.TrueForAll()

c# linq

35
推荐指数
4
解决办法
1万
查看次数

双[,,]代表什么?

在回答有关的问题时double[,],我为该数据结构添加了LINQPad输出的屏幕截图:

双[,]

但是,我想知道它是什么double[,,]样的,LINQPad不会为我想象它.另外,我不明白其中的数据格式:

   int[,,] foo = new int[,,]
   { 
     { 
        { 2, 3}, 
        { 3, 4}
     },
     { 
        { 3, 4},
        { 1, 5} 
     }
   };
Run Code Online (Sandbox Code Playgroud)

任何人都可以为我想象这个吗?

c#

21
推荐指数
3
解决办法
616
查看次数

为什么Enum.Parse()返回对象?

关于将字符串转换为枚举值有很多问题.一般来说,答案看起来像这个问题的答案:

StatusEnum MyStatus = (StatusEnum) Enum.Parse( typeof(StatusEnum), "Active", true );
Run Code Online (Sandbox Code Playgroud)

虽然这是一个非常合理的答案,并且您可以编写一个方法来简化调用,但它并没有回答为什么 Enum.Parse()返回一个object而不是相应的枚举值的问题.为什么我要把它投到StatusEnum


编辑:

基本上,问题是为什么这样的函数不是Enum类的一部分?

    public static T Parse<T>(string value) where T: struct 
    {
        return (T)Enum.Parse(typeof (T), value);
    }
Run Code Online (Sandbox Code Playgroud)

这个功能完美无缺,完全符合您的期望. StatusEnum e = Enum.Parse<StatusEnum>("Active");.

c# enums

13
推荐指数
1
解决办法
2222
查看次数

带接口和LINQ的==和.Equals()之间的区别

我最近得到了"接口成员的映射.....不支持"错误,我根据这个线程解决了这个错误.展示:

public interface IMyInterface { string valueText { get; set; } }
public class MyData : IMyInterface
{
   int ID { get; set;}
   string valueText { get; set;}
}
public class MyOtherData : IMyInterface
{
   long ID { get; set;}
   string valueText { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

public static IEnumerable<T> GetByValue<T>(string value) : where T : class, IMyInterface, new()
{ 
   using (var context = new DataContext())
   { 
      // The important line
      return context.GetTable<T>().Where(x => x.valueText == …
Run Code Online (Sandbox Code Playgroud)

c# linq-to-sql

11
推荐指数
1
解决办法
685
查看次数

使用额外参数传递委托函数

我有一个委托,如下所示:

public delegate bool ApprovalPrompt(ApprovalType type, int receipt, params string[] info);
Run Code Online (Sandbox Code Playgroud)

我接受这种类型的委托作为我想要调用的函数的参数.但是,在一个特定的调用函数中,我想将一些额外的数据传递给与该委托匹配的函数.

这是实现功能的签名:

private static bool LogApprovalNeeded(FraudFilterUtilities.ApprovalType type, int receipt, params string[] info)
Run Code Online (Sandbox Code Playgroud)

它被称为如下:

PrepareReceipt(LogApprovalNeeded);
Run Code Online (Sandbox Code Playgroud)

我希望它是:

private static bool LogApprovalNeeded(Customer cust, FraudFilterUtilities.ApprovalType type, int receipt, params string[] info)
Run Code Online (Sandbox Code Playgroud)

理想情况下使用如下:

PrepareReceipt(LogApprovalNeeded(myCustomer))
Run Code Online (Sandbox Code Playgroud)

我怎么能完成这样的事情呢?我宁愿不需要在类中声明一个字段只是为了Customer在一个函数和回调之间保存参数......

c# delegates

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

在构建项目时将内容文件输出到特定文件夹

我有VS 2012项目的结构如下:

Project
   Folder1
      file.xml
      schema.xsd
      code.cs
   Folder2
      code1.cs
      code2.cs
Run Code Online (Sandbox Code Playgroud)

我设置Copy to output directory属性file.xmlschema.xsd,Copy always并希望将它们输出到程序集outputed(bin\Debug)的同一文件夹,但它们总是复制到文件夹bin\Debug\Folder1.有没有办法实现我的目标,而无需将文件移动到项目的根目录?

build-process visual-studio visual-studio-2012

9
推荐指数
1
解决办法
8467
查看次数

TortoiseSVN和subversion的全局忽略

我在说服TortoiseSVN尊重我的subversion存储库svn:global-ignores属性时遇到了问题.无论我尝试过什么,它仍然会将所有被认为是被忽略的文件列为无版本并可用于提交.

我的svn:global-ignores字符串,设置在存储库的根目录上(注意binobj在结尾处):

*.o *.lo .la ## .*.rej .rej .~ ~ .# .DS_Store thumbs.db Thumbs.db *.bak *.class *.exe *.dll *.mine *.obj *.ncb *.lib *.log *.idb *.pdb *.ilk .msi .res *.pch *.suo *.exp ~. cvs CVS .CVS .cvs release Release debug Debug ignore Ignore bin Bin obj Obj *.csproj.user *.user _ReSharper.* *.resharper.user
Run Code Online (Sandbox Code Playgroud)

我的提交窗口的屏幕截图:

有问题的提交窗口

我该怎么做才能防止所有这些binobj文件夹出现?在之前的机器上,我使用了TortoiseSVN的全局忽略属性,但是我希望所有开发人员都忽略这些文件,而不必记住在我们设置的每台新机器上设置该字段.我误解了SVN的global-ignores作用吗?

svn tortoisesvn

9
推荐指数
1
解决办法
2538
查看次数

当我的结帐流程有确认页面时,最大限度地降低PCI合规性

我有这样的购物车流程:

  • 第1页.选择产品
  • 第2页.在单页结账时输入地址,运费和信用卡详细信息.
  • 第3页.用户确认订单 - 但我们希望有最后的机会进行追加销售,因此我们必须能够更改收费金额.如果用户放弃此页面,则不应对其进行收费或授权,但我们必须能够打电话给他们并说服他们订购,而无需再次询问他们的号码.
  • 第4页.收据页面

  • 重复计费是以后的要求,具有可变金额和计划.(用户必须能够返回并更改其计划而无需再次输入CC编号).

这是我想要做的:

  • 将用户发送到第三方页面(因为我想要单页结帐并保留品牌)
  • 最大限度地降低PCI合规性要求
  • 如果用户未确认,则授权付款并取消付款.这是在许多层面上遇到麻烦!

由于我需要一个确认页面,我想我需要使用某种标记化系统,例如braintreepayments提供的.您基本上将信用卡号存储在他们的服务上,他们会返回一个代表该号码的令牌.然后,您可以随时对该卡收取任何金额的费用.这当然是最灵活的解决方案.

我想绕过圈子试图找出这是否是最好的解决方案:

  • 我不知道BrainTree是否是唯一提供此类服务的公司,但我也不相信它真的有必要.
  • 如果我暂时将CC存储在会话中直到用户确认它,我仍然可以使用几乎任何支付网关.因此,问题变成"我暂时将CC存储在存储器中是否重要"以及程度如何.

"最纯粹"最安全的方法似乎是重定向到braintree(或提供类似网关的其他人).

编辑(分配赏金后):

我的结论是,我必须有一个系统,我们只需要满足PCI的 A级.一直在更详细地研究PCI,这些问卷是卡片不存在的商家(即电子商务)的相关问卷.

SAQ A :(当CC号码甚至没有触及我们的服务器时).如果你在线销售,你仍然需要填写这份问卷,但这很容易.

SAQ D :(如果我们不存储它们,CC数字会触及我们的服务器)

看看这些问卷,揭示了需求之间的巨大差异.PCI要求经常被误解为一个简单的列表,例如"维护防火墙","安全策略","限制物理访问" - 但如果您实际阅读问卷D,您会看到它有更多问题和要求的顺序.例如,您必须回答您的服务器是否受摄像机保护,以及您的服务器上有哪种数据加密.

我真的很感激知道哪些实际的产品或供应商能够帮助我做我想做的事情.如果真的只有1或2家公司让我这样做,那么我需要知道.

我与Braintree没有任何关系,除非我设法进入他们的电子邮件营销列表.他们只是我设法找到的唯一一家这样做的公司.如果你正在经营另一家公司,那么请务必吹自己的小号.随着时间的推移,PCI要求将变得更加严格,任何已经阅读过这个问题的人都可能已经意识到这一点.

credit-card pci-dss

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

部分取消组合重复值列表

我知道如何使用LINQ对数据进行分组,我知道如何将其拆分为单独的项目,但我不知道如何仅将其部分取消组合.

我有一组看起来像这样的数据:

var data = new Dictionary<Header, Detail>()
{
    { new Header(), new Detail { Parts = new List<string> { "Part1", "Part1", "Part2" } } }
};
Run Code Online (Sandbox Code Playgroud)

为了正确处理这个问题,我需要复制部分的每个实例都是字典中的单独条目(尽管如果它仍然是字典并不重要 - IEnumerable<KeyValuePair<Header, Detail>>完全可以接受).但是,我不想Parts完全拆分列表 - 在列表中有不同的部分是可以的.

具体来说,我希望最终数据看起来像这样:

{
  { new Header(), new Detail { Parts = new List<string> { "Part1", "Part2" } } },
  { new Header(), new Detail { Parts = new List<string> { "Part1" } } },
}
Run Code Online (Sandbox Code Playgroud)

对于更复杂的示例:

var data = new Dictionary<Header, Detail>()
{
    { new …
Run Code Online (Sandbox Code Playgroud)

c# linq

7
推荐指数
1
解决办法
1478
查看次数