小编nfp*_*lee的帖子

获取阵列中的所有组合

说我有以下数组:

var arr = new[] { "A", "B", "C" };
Run Code Online (Sandbox Code Playgroud)

如何生成仅包含两个字符且不包含两个字符的所有可能组合(例如,AB将相同BA).例如,使用上面的数组会产生:

AB
AC
BC
Run Code Online (Sandbox Code Playgroud)

请注意,此示例已简化.数组和所需字符串的长度将更大.

如果有人可以提供帮助,我真的很感激.

c#

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

检查日期范围是否在日期范围内

我有以下课程:

public class Membership
{
    public DateTime StartDate { get; set; }
    public DateTime? EndDate { get; set; } // If null then it lasts forever
}
Run Code Online (Sandbox Code Playgroud)

我需要确保在添加到以下列表时新项目与现有项目的日期不重叠:

var membership = new List<Membership>
{
    new Membership { StartDate = DateTime.UtcNow.AddDays(-10), EndDate = DateTime.UtcNow.AddDays(-5) },
    new Membership { StartDate = DateTime.UtcNow.AddDays(-5), EndDate = null }
};
Run Code Online (Sandbox Code Playgroud)

例如:

var newItem = new Membership { StartDate = DateTime.UtcNow.AddDays(-15), EndDate = DateTime.UtcNow.AddDays(-10) }; // Allowed

var newItem2 = new Membership { StartDate = DateTime.UtcNow.AddDays(-15), …
Run Code Online (Sandbox Code Playgroud)

c#

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

PayPal Rest API直接付款

我目前让我的网站通过PayPal接受付款.我使用REST SDKPHP SDK来处理这个问题.这是我通过我的网站处理付款的步骤:

  1. 创建一个意图设置为"销售",付款方式设置为"paypal"并将重定向网址设置为确认页面的付款.
  2. 在确认页面上,我将返回的paymentId和PayerID(来自查询字符串)存储在步骤3中使用.
  3. 一旦用户确认订单,我就执行在步骤2中存储的paymentId和PayerID中的支付.

这是一种享受.但是,我想让用户选择通过PayPal(如上所述)或通过我的网站(使用PayPal直接付款)处理付款.

对于直接付款,我已经能够通过将意图设置为"促销",将付款方式设置为"credit_card"并传递相应的卡详细信息来成功创建付款.但是,我不确定我是否需要像之前那样执行付款,或者付款是否自动完成.

如果我确实需要执行付款,那么如何获得paymentId和PayerID?如果我不需要执行付款,则会出现问题,因为我希望用户确认付款.我可以将创建支付内容移动到仅在用户确认直接付款订单后才执行,但是在用户输入后我无法验证卡详细信息.我想知道是否有更好的方法来处理这个问题?

如果有人能帮忙解决这个问题,我会很感激.谢谢

paypal-sandbox paypal-rest-sdk

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

Vue 3 删除内联块元素之间的空白

Vue 3 删除了内联块元素之间的空白。这意味着我必须返回浏览相当多的网站并更新 CSS,然后才能安全地从版本 2 升级。有没有办法关闭此功能?

请参阅以下示例:

<ol>
    <li style="display: inline-block"><a href="#">A</a> &raquo; </li>
    <li style="display: inline-block"><a href="#">B</a></li>
</ol>
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/27vwLn6u/

这是 Vue 2 中的相同示例:

https://jsfiddle.net/3d0jcnmf/

vuejs3

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

ASP.NET MVC 3依赖注入 - 控制器,视图和操作过滤器

我正在尝试使用Microsoft Unity在ASP.NET MVC 3应用程序中使用依赖注入工作.首先,我实现了自己的IDependencyResolver并在我的Global.asax文件中激活它,如下所示:

DependencyResolver.SetResolver(new UnityDependencyResolver(container));
Run Code Online (Sandbox Code Playgroud)

我发现我不需要做任何其他事情来控制器注入(通过构造函数和[Dependency]属性)来工作.使用默认视图引擎,我还发现我可以使[Dependency]属性在标准视图中工作,但不能在布局视图中工作.是否有可能使布局视图也适用于此?

但是我实现了自己的视图引擎,该引擎继承自VirtualPathProviderViewEngine,它覆盖CreateView/CreatePartialView方法并返回我自己的自定义视图(实现IView).请参阅下面的自定义视图的Render方法:

public void Render(ViewContext viewContext, TextWriter writer) {
    var webViewPage = DependencyResolver.Current.GetService(_type) as WebViewPage;
    //var webViewPage = Activator.CreateInstance(_type) as WebViewPage;

    if (webViewPage == null)
        throw new InvalidOperationException("Invalid view type");

    webViewPage.VirtualPath = _virtualPath;
    webViewPage.ViewContext = viewContext;
    webViewPage.ViewData = viewContext.ViewData;
    webViewPage.InitHelpers();

    WebPageRenderingBase startPage = null;

    if (_runViewStartPages)
        startPage = StartPage.GetStartPage(webViewPage, "_ViewStart", _viewStartFileExtensions);

    var pageContext = new WebPageContext(viewContext.HttpContext, webViewPage, null);
    webViewPage.ExecutePageHierarchy(pageContext, writer, startPage);
}
Run Code Online (Sandbox Code Playgroud)

使用注释掉的行我在视图中完全丢失了依赖注入,所以我将其更改为上面的行,这对于标准视图再次正常工作,但不适用于布局视图.如果您能告诉我如何修改上述内容以适用于布局视图,我会很感激吗?

最后我还试图让动作过滤器注入工作.我发现了两种不同的情况:

  1. 通过属性将过滤器应用于操作.

  2. 将其定义为全局过滤器,例如:

    GlobalFilters.Filters.Add(new TestAttribute());

似乎都没有使用依赖性解析器.因此我需要做一些额外的工作.如果有更好的方法,请纠正我.为了启用第一个场景,我执行了以下操作:

public class UnityFilterAttributeFilterProvider : FilterAttributeFilterProvider …
Run Code Online (Sandbox Code Playgroud)

dependency-injection unity-container asp.net-mvc-3

6
推荐指数
1
解决办法
1987
查看次数

Symfony3连接注释路由

我正在编写自己的基于Symfony组件构建的PHP框架作为学习练习.我按照http://symfony.com/doc/current/create_framework/index.html上的教程来创建我的框架.

我现在想使用注释将我的路线连接到我的控制器.我目前有以下代码来设置路由:

// Create the route collection
$routes = new RouteCollection();

$routes->add('home', new Route('/{slug}', [
    'slug' => '',
    '_controller' => 'Controllers\HomeController::index',
]));

// Create a context using the current request
$context = new RequestContext();
$context->fromRequest($request);

// Create the url matcher
$matcher = new UrlMatcher($routes, $context);

// Try to get a matching route for the request
$request->attributes->add($matcher->match($request->getPathInfo()));
Run Code Online (Sandbox Code Playgroud)

我遇到了以下类来加载注释但我不确定如何使用它:

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Routing/Loader/AnnotationDirectoryLoader.php

如果有人可以提供帮助,我会很感激.

谢谢

php doctrine annotations symfony

6
推荐指数
1
解决办法
346
查看次数

正确计算包括外币税在内的价格的方法

我正在尝试升级应用程序,以便我可以销往多个国家/地区.我将所有价格存储在数据库中的英镑不含税,最高可达4dp,我需要计算该国货币的价格,包括税金.

我是否将价格乘以汇率与不含税的价格(选项1)相乘,还是计算包含税的金额,然后用汇率计算多倍(选项2)?在查看OpenCart如何计算它之后,我还添加了一个选项3,它类似于选项2,但在显示它时只会轮次.以下是所有3个选项的公式:

选项1:

回合((价格*汇率)/ 100*(100 +税率))

选项2:

回合(回合(价格/ 100*(100 +税率))*汇率)

选项3:

回合((价格/ 100*(100 +税率))*汇率)

例如,假设我的产品价格为89.99.如果我想用汇率为1.5且税率为20%的货币显示.我会说:

选项1:

回合((89.99*1.5)/ 100*(100 + 20))= 161.98

选项2:

回合(回合(89.99/100*(100 + 20))*1.5)= 161.99

选项3:

回合((89.99/100*(100 + 20))*1.5)= 161.98

我发现OpenCart总是将未计算的数字乘以最后的汇率.例如,他们计算行总数的公式是:

回合((价格/ 100*(100 +税率))*数量*汇率)

因此,如果我要订购我的产品中的3个,它会给出:

回合((89.99/100*(100 + 20))*3*1.5)= 485.95

我发现OpenCart方式的问题是用户将看到项目价格(含税)161.98和总计485.95.但是,如果我说161.98*3我得到485.94,所以它没有正确总结.

重要的是我能做到这一点,因为你可以看到我最终会得到一分钱的问题.如果有人能让我知道哪种方式是正确的,或者如果没有一种方法可以提出替代方案,我将不胜感激.谢谢

accounting currency invoice e-commerce tax

6
推荐指数
1
解决办法
184
查看次数

Vue 3 中 Vue 2 的 __vue__ 等价物是什么?

我看到有,__vueParentComponent但我现在必须说__vueParentComponent.props.x而不是__vue__.x。另外,我看不到如何访问在方法中创建的自定义变量(针对组件实例)beforeCreate

vue.js vuejs3

6
推荐指数
1
解决办法
2543
查看次数

单元测试自定义模型绑定器 - 假 HttpContext 问题

我定义了以下单元测试来测试我的模型绑定器:

[TestMethod]
public void DateTime_Works() {
    // Arrange
    var controllerContext = FakeContext.GetAuthenticatedControllerContext(new Mock<Controller>().Object, "TestAdmin");

    var values = new NameValueCollection {
        { "Foo.Date", "12/02/1964" },
        { "Foo.Hour", "12" },
        { "Foo.Minute", "00" },
        { "Foo.Second", "00" }
    };

    var bindingContext = new ModelBindingContext() { ModelName = "Foo", ValueProvider = new NameValueCollectionValueProvider(values, null) };
    var binder = new DateAndTimeModelBinder();

    // Act
    var result = (DateTime)binder.BindModel(controllerContext, bindingContext);

    // Assert
    Assert.AreEqual(DateTime.Parse("1964-12-02 12:00:00"), result);
}
Run Code Online (Sandbox Code Playgroud)

这是 FakeContext 类:

public static class FakeContext {
    public static …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc unit-testing mocking model-binding

5
推荐指数
1
解决办法
1152
查看次数

扩展方法 - 更改命名空间

我正在使用第三方库,其中包含一堆基于IQueryable的扩展方法.要使用这些扩展方法,我不希望我的应用程序充斥着使用扩展方法所在的第三方命名空间的语句.

这样我就可以在不久的将来尽可能轻松地将它从库中切换出来.但是我不确定这样做的最佳方法是什么.我考虑的一个选项是在项目中创建我自己的一组扩展方法(然后我可以控制命名空间).这个问题是我无法看到如何维护现有扩展方法的名称.例如:

namespace MyProject.Extensions {
    public static class IQueryableExtension {
        public static IQueryable<T> Fetch<T, K>(this IQueryable<T> queryable, Expression<Func<T, K>> selector) {
            return queryable.Fetch(selector);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你可能会在这里看到问题.我试图在我的内部调用第三方扩展方法,它实际上称自己创建一个无限循环.

我很感激你的帮助.谢谢

c#

5
推荐指数
1
解决办法
238
查看次数