小编Kja*_*tan的帖子

使用VB.net中的linq搜索对象列表中的对象列表

我有2节课

Public Class Shipper

    Public Property ShipperID As Long
    Public Property CreateDate As DateTime
    Public Property ShipperCode As String
    Public Property ShipperName As String
    Public Property ShippingMethods As List(Of ShippingMethod)

Public Class ShippingMethod

    Public Property ShippingMethodID As Long
    Public Property ShipperID As Long
    Public Property CreateDate As DateTime
    Public Property ShipppingMethod As String
    Public Property ShipppingMethodCode As String
Run Code Online (Sandbox Code Playgroud)

我正在尝试搜索托运人名单为空白且托运人姓名不为空白的托运人名单 - 我得到了

Dim oListShipper As List(Of Shipper) = GetAllShippers()
Dim oListShipperRet As List(Of Shipper) = _
        oListShipper.FindAll(Function(c) (c.ShipperCode = "" And …
Run Code Online (Sandbox Code Playgroud)

.net linq vb.net lambda

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

如何重构程序代码?

我正在为网站创建密码重置功能.必须实现密码重置的第一步:

  1. 用户以密码重置形式输入他的电子邮件.
  2. 系统检查用户是否已注册电子邮件.
  3. 如果找到了用户,系统会发送带有密码重置URL和uniqe令牌的电子邮件.
  4. 如果未找到用户,系统将发送电子邮件通知已为此电子邮件启动密码重置,但用户帐户不存在.

我有服务类,它实现了公共方法 - RequestPasswordReset,这个方法非常具有程序性:

public void RequestPasswordReset(string email)
{
    if(!IsValidEmail(email))
    {
        throw new ArgumentException("email");
    }

    var user = this.repository.FindByEmail(email);
    if(user != null)
    {
        user.PasswordResetToken.Set(this.tokenGenerator.NewToken());
        this.emailService.Send(this.from, 
                               user.Email, 
                               "Password reset", 
                               "Your reset url: http://mysite.com/?t=" + 
                                     user.PasswordResetToken.Value);
    }
    else
    {
    this.emailService.Send(this.from,
                        user.Email, 
                        "Requested password reset", 
                        "Someone requested password reset at http://mysite.com");
    }
}
Run Code Online (Sandbox Code Playgroud)

此方法违反单一责任原则 - 它检查用户是否存在,重置用户令牌,发送电子邮件.

这种解决方案的主要问题是,如果我需要添加额外的步骤,我必须为RequestPasswordReset方法和方法添加实现变得越来越复杂.例如,其他步骤可以是检查用户是否已在另一个相关系统中注册,我可以建议他在我的系统中创建新帐户或为他创建用户帐户.

我正在研究Command模式 - 将服务类重构为单独的命令可能是好的,而RequestPasswordReset可能是这些命令之一.但它并没有解决RequestPasswordReset方法中的步骤的主要问题.

我也在关注责任链模式 - 按顺序处理步骤会很好,但我不知道如何使用它来处理控制流程 - 应该实现的不同条件.此外,看起来每个处理程序应该执行类似的操作,并且不清楚整个控制流如何更改.

重构这样的程序代码的最佳方法是什么?

c# refactoring design-patterns

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

如何拦截和取消方法执行

有没有办法拦截方法执行并取消它?我只是找到了一种Invoke方法来使用Microsoft.Practices.Unity和从方法中抛出异常ICallHandler,但是在Invoke方法实现上,我只能返回getNext()(input, getNext);.

这是代码:

public class TestHandler : ICallHandler
{
    public int Order { get; set; }

    public IMethodReturn Invoke(IMethodInvocation input, 
                                GetNextHandlerDelegate getNext)
    {
        Console.WriteLine("It's been intercepted.");

        // Here... please Lord, tell me I can cancel it, I'm a good person.
        return getNext()(input, getNext);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# aop unity-container interceptor

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

覆盖DateTimePicker时设置日历大小以添加周数

我正在尝试创建一个DateTimePicker显示的周数,如此处所示(代码项目示例).

除了一个小细节外,它的效果相当不错; 尝试选择日期时弹出的日历尺寸不正确.如您所见,日历区域有点"狭窄",尤其是沿着右边缘.

在此输入图像描述

我可以在这里单击右下角,然后将其拖出一点 - 只需将其展开以使其看起来正确:

在此输入图像描述

我似乎无法找到任何方法强制日历从一开始就是正确/完整的大小,或调整它的大小.任何想法将不胜感激.

c# datetimepicker winforms

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

验证两个控件(CustomValidator)

在提交表单之前,我需要测试总和(txtA + txtB)是否大于100.是否可以使用a来执行此操作CustomValidator,因为我不知道是否可以在controltovalidate中选择2个文本框

<asp:TextBox ID="txtA" runat="server"></asp:TextBox>
<asp:TextBox ID="txtB" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator2" 
                     runat="server" 
                     ErrorMessage="CustomValidator" />

<asp:Button ID="Button1" runat="server" Text="Button" />
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# vb.net asp.net

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

如何使用MultiLine和Scroller进行WinRT TextBox

我正在使用Windows应用商店应用并尝试使用多行和滚动条创建一个文本框.

我假设这应该像在WPF中一样容易实现.

我怎样才能做到这一点?非常感谢!!

xaml windows-store-apps windows-rt

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

确保字符串不包含特定字符的快速方法

我想确保 C# 字符串不包含特定字符。

我正在使用string.IndexOfAny(char[]),在我看来,Regex 在这项任务中会比较慢。有没有更好的方法来实现这一点?速度在我的应用程序中至关重要。

c# string validation performance

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

从Active Directory获取GUID或本机GUID

我正在编写一个Web服务,用于检查用户是否存在于Active Directory中以及是否启用了用户帐户.一旦检查完毕,我就会继续验证他们的用户帐户.一旦他们成功输入用户名和密码,我想得到GUIDNativeGuid我正在验证的人.我想使用GUIDNativeGUID在SQL Server数据库中建立一个关系.

这是我正在采取的方法:

public string isAuthenticated (string serverName, string userName, string pwd)
{
    string _serverName, _userName, _pwd;
    _serverName = serverName;
    _userName = userName;
    _pwd = pwd;

    string message;

    if (DoesUserExist (_userName) == true)
    {
        if (isActive(userName) == true)
        {
            try
            {
                DirectoryEntry entry = new DirectoryEntry(_serverName, _userName, _pwd);
                object nativeObject = entry.NativeObject;
                //issue is here
                string GUID = entry.Guid.ToString();
                string GUIDID = entry.NativeGuid;
                //end of issue
                message = "Successfully authenticated";
            } …
Run Code Online (Sandbox Code Playgroud)

c# directoryservices web-services active-directory

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

Oracle SQLPlus:没有行号的回声?

我正在开发一个解决方案,其中多个 SQL 和 PL/SQL 脚本通过 SQL*Plus 以批处理方式一起运行。

我在脚本中的相关点声明SET ECHO OFF;SET ECHO ON;以输出相关代码。

目前输出看起来像这样:

SQL> DECLARE
  2      ct number := 0;
  3      ctChanges number := 0;
  4  
  5  BEGIN
  6      select count(*) into ct from ...
  7  (...rest of code block...)
"some specific status message"
Commit executed.
Run Code Online (Sandbox Code Playgroud)

我们将此输出作为运行日志保存在我们的构建环境中,但也可以作为纯文本文件访问它。

然而,这种格式的一个缺点是,如果我想复制代码的某个部分并在 IDE(如 Toad 或 SQL Developer)中再次运行它,则很难排除行号。

是否可以告诉 SQL*Plus 输出上述代码,但不包括行号?

sql oracle logging plsql sqlplus

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

如何获取模型属性的id以与MVC3中的自定义IClientValidatable一起使用

我正在尝试编写一个自定义验证属性,该属性将有条件地要求基于模型的布尔属性的字段.

我有我的属性实现IClientValidatable.我有要检查的属性的名称,但我不知道如何获取目标属性的客户端ID.

public IEnumerable<ModelClientValidationRule> 
                        GetClientValidationRules(ModelMetadata metadata, 
                                                 ControllerContext context)
{
    var clientTarget = ?????;
    var rule = new ModelClientValidationRule()
    {
        ErrorMessage = 
            FormatErrorMessage(metadata.DisplayName ?? metadata.PropertyName),
        ValidationType = "requiredif"
    };

    rule.ValidationParameters["target"] = clientTarget;

    yield return rule;
}
Run Code Online (Sandbox Code Playgroud)

javascript:

$.validator.addMethod("requiredif", function (value, element, target)
{
    //check on value of target
});

$.validator.unobtrusive.adapters.addSingleVal("requiredif", "target");
Run Code Online (Sandbox Code Playgroud)

如何获取目标属性的客户端ID,以便客户端javascript可以检查值?

c# validation asp.net-mvc-3

3
推荐指数
1
解决办法
2236
查看次数