小编Kal*_*exx的帖子

GetType().GetMethods在使用BindingFlag时不返回任何方法

所以我试图检索我的类中具有特定属性的所有私有方法.当我做

this.GetType().GetMethods()
Run Code Online (Sandbox Code Playgroud)

这将返回18个方法,所有方法都是公共的.所以我尝试修改它以使用如下的绑定标志:

this.GetType().GetMethods(BindingFlags.NonPublic);
Run Code Online (Sandbox Code Playgroud)

这导致零结果返回.然后我开始玩游戏,我无法完成任何GetMethods(BindingFlags.x)工作.

this.GetType().GetMethods(BindingFlags.Default);
this.GetType().GetMethods(BindingFlags.Public);
Run Code Online (Sandbox Code Playgroud)

所有这些都返回零结果.我究竟做错了什么?

c# reflection

23
推荐指数
1
解决办法
9729
查看次数

从Asp.net MVC 2升级到3 RC后,Aspx页面将无法加载

我昨晚升级到Asp.net MVC 3 RC,然后按照发行说明中的​​说明进行操作.但是,正常的Aspx页面不再有效.

例如,当我转到根(Home/Index)时,会发生以下错误:

The view at '~/Views/Home/Index.aspx' must derive from ViewPage, ViewPage<TModel>, ViewUserControl, or ViewUserControl<TModel>.
Run Code Online (Sandbox Code Playgroud)

这是使用原始MVC Home/Index视图的几乎没有修改过的版本.代码是:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server">
    Home Page
</asp:Content>

<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
    <h2><%= Html.Encode(ViewData["Message"]) %></h2>
    <p>
        <%= Html.ActionLink("Project List", "List", "Project", new { area = "writing" }, null) %>
    </p>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

它设置为从ViewPage继承,所以我不确定是什么问题.

主页面不会修改MVC安装的内容.

有任何想法吗?

c# asp.net-mvc asp.net-mvc-3

22
推荐指数
1
解决办法
9957
查看次数

当通过反射浏览类型时,如何过滤掉<> c_DisplayClass类型?

我正在尝试创建一个单元测试,以确保我的所有业务类(我称之为命令和查询类)可以使用Windsor解决.我有以下单元测试:

    [TestMethod]
    public void Windsor_Can_Resolve_All_Command_And_Query_Classes()
    {
        // Setup
        Assembly asm = Assembly.GetAssembly(typeof(IUnitOfWork));
        IList<Type> classTypes = asm.GetTypes()
                                    .Where(x => x.Namespace.StartsWith("MyApp.DomainModel.Commands") || x.Namespace.StartsWith("MyApp.DomainModel.Queries"))
                                    .Where(x => x.IsClass)
                                    .ToList();

        IWindsorContainer container = new WindsorContainer();
        container.Kernel.ComponentModelBuilder.AddContributor(new SingletonLifestyleEqualizer());
        container.Install(FromAssembly.Containing<HomeController>());

        // Act
        foreach (Type t in classTypes)
        {
            container.Resolve(t);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这失败,出现以下异常:

No component for supporting the service MyApp.DomainModel.Queries.Organizations.OrganizationByRegistrationTokenQuery+<>c__DisplayClass0 was found
Run Code Online (Sandbox Code Playgroud)

我知道<>c__DisplayClass0类型是由于Linq被编译,但是如何在我的Linq查询中没有硬编码名称的情况下过滤掉这些类型?

c# reflection

22
推荐指数
2
解决办法
4412
查看次数

如何使用WinForms PropertyGrid编辑字符串列表?

在我的应用程序中,我有一个属性网格,允许用户更改设置.这适用于字符串和其他值属性,但我现在需要的是一个可由用户编辑的字符串列表.

问题是如果我MyPropertyGrid.SelectedObject = new { Test = new List<string>() };在我的代码中并且用户尝试编辑该Test属性,当他们单击"添加"按钮时,会发生以下错误:

 Constructor on type 'System.String' not found
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为字符串是不可变的.但是,我仍然需要一些方法来在属性网格中存储多个字符串(或类似字符串的数据).

有没有人对如何实现这一点有任何想法?

c# string propertygrid winforms

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

如何将List <string>转换为Sql In语句的SqlParameter?

我似乎对如何In使用a 执行语句感到困惑SqlParameter.到目前为止,我有以下代码:

cmd.CommandText = "Select dscr from system_settings where setting in @settings";
cmd.Connection = conn;
cmd.Parameters.Add(new SqlParameter("@settings", settingList));

reader = cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

settingsList是一个List<string>.当cmd.ExecuteReader()被调用时,ArgumentException由于无法将a映射List<string>到"已知的提供者类型" ,我得到了.

如何(安全地)In使用SqlCommands 执行查询?

c# sql ado.net sqlcommand

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

为什么webpack --watch在更新特定文件时不会更新

我有一个相当大的webpack应用程序,它被大量组织成特定的段.使用纯javascript和jsx文件时,一切都很好用,因为随时我更新任何东西,它会逐步重建捆绑包.

我现在已经在同一个根目录中添加了一个新文件夹,并在其中创建了一个新的javascript文件.Webpack也知道它,因为它包含了包中的代码,并且只要它看到其他文件之一被更改,它就会正确地重建所有更改,包括在我的新javascript文件中.

但是,出于某种原因,每当我保存对这个javascript文件的更改时,webpack都不会检测到它需要从中重新加载更改.因此,如果我所做的唯一更改是在这个javascript文件中,则不会创建新的包,我必须ctrl+ c并重新运行webpack.

我已经尝试重命名文件夹,重命名javascript文件,以及其他几个没有帮助的情况.

任何人都可以对可能发生的事情有所了解,或者有什么方法可以获得有关webpack看到或未看到的更多信息?

javascript webpack

18
推荐指数
2
解决办法
9404
查看次数

我只是不了解TDD单元测试(Asp.Net MVC项目)?

我想弄清楚如何正确有效地单元测试我的Asp.net MVC项目.当我开始这个项目时,我买了Pro ASP.Net MVC,在那本书中我学到了TDD和单元测试.在看了这些例子,以及我在当前公司的QA担任软件工程师的事实后,我惊讶于TDD看起来有多棒.所以我开始研究我的项目并且为我的数据库层,业务层和控制器编写单元测试.在实施之前,所有东西都经过了单元测试.起初我觉得它很棒,但事情开始走下坡路.

以下是我遇到的问题:

  • 我最终编写了应用程序代码,以便能够执行单元测试.我的意思并不是很好,因为我的代码被破坏了,我不得不修复它以便单元测试通过.我的意思是,由于使用linq进行数据检索(使用通用存储库模式),将数据库抽象为模拟数据库是不可能的.

    原因是使用linq-> sql或linq->实体,您只需执行以下操作即可进行连接:

    var objs = select p from _container.Projects select p.Objects;
    
    Run Code Online (Sandbox Code Playgroud)

    但是,如果您模拟数据库层,为了让linq通过单元测试,您必须将linq更改为

    var objs = select p from _container.Projects
           join o in _container.Objects on o.ProjectId equals p.Id
           select o;
    
    Run Code Online (Sandbox Code Playgroud)

    这不仅意味着你正在改变你的应用程序逻辑,所以您可以单元测试,但你让你的代码的可测试性的唯一目的效率较低,并且摆脱了很多使用ORM在首位的优势.

    此外,由于我的模型的许多ID都是数据库生成的,因此我证明必须编写额外的代码来处理非数据库测试,因为ID从未生成过,我不得不处理这些情况以便单元测试通过,但它们永远不会出现在真实场景中.

    因此,我最终抛弃了我的数据库单元测试.

  • 只要我返回视图,编写控制器的单元测试就很容易.但是,我的应用程序的主要部分(以及从单元测试中受益最多的部分)是一个复杂的ajax Web应用程序.出于各种原因,我决定将应用程序从返回视图更改为返回带有我需要的数据的JSON.在这发生之后,我的单元测试变得非常痛苦,因为我没有找到任何好的方法来为非平凡的json编写单元测试.

    经过大量的时间试图找到一个单元测试JSON的好方法后,我放弃并删除了所有的控制器单元测试(到目前为止,所有控制器操作都集中在应用程序的这一部分).

  • 所以我最后还是测试了服务层(BLL).现在我正在使用EF4,但我也遇到了linq-> sql这个问题.我选择使用EF4模型优先方法,因为对我而言,这样做是有道理的(定义我的业务对象并让框架弄清楚如何将其转换为sql后端).这在开始时很好,但现在由于人际关系而变得很麻烦.

    例如说我有Project,User和Object实体.一个对象必须与项目相关联,并且项目必须与用户相关联.这不仅是数据库特定的规则,这些也是我的业务规则.但是,假设我想进行单元测试,我可以保存一个对象(举个简单的例子).我现在必须执行以下代码以确保保存工作:

    User usr = new User { Name = "Me" };
    _userService.SaveUser(usr);
    
    Project prj = new Project { Name = "Test Project", Owner = usr };
    _projectService.SaveProject(prj);
    
    Object obj = new …
    Run Code Online (Sandbox Code Playgroud)

architecture tdd asp.net-mvc unit-testing

16
推荐指数
1
解决办法
1828
查看次数

为什么我的XDocument在我不想要时保存声明?

我有以下代码:

class Program
{
    static void Main(string[] args)
    {
        using (var stream = File.Create(@"C:\test.xml"))
        {
            var xml =
                new XElement("root",
                    new XElement("subelement1", "1"),
                    new XElement("subelement2", "2"));

            var doc = new XDocument(xml);
            doc.Declaration = null;
            doc.Save(stream);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图在没有xml声明的情况下保存XML,但即使我将声明归零XDocument,它仍然被保存到最终的XML中.

此代码输出:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <subelement1>1</subelement1>
  <subelement2>2</subelement2>
</root>
Run Code Online (Sandbox Code Playgroud)

c# xml linq-to-xml

16
推荐指数
2
解决办法
6992
查看次数

如何将12小时时间字符串转换为C#TimeSpan?

当用户填写表单时,他们使用下拉列表表示他们希望安排测试的时间.此下拉列表包含12小时上午/下午表格中15分钟增量的一天中的所有时间.因此,例如,如果用户选择下午4:15,则服务器将字符串发送"4:15 PM"到具有表单提交的Web服务器.

我需要一些如何将此字符串转换为Timespan,因此我可以将其存储在我的数据库的时间字段中(使用linq to sql).

有人知道将AM/PM时间字符串转换为时间跨度的好方法吗?

c# timespan

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

Visual Studio的.Publish.xml是否可以安全地存储在源代码管理中?

我最近意识到我的项目.Publish.xml文件正致力于源代码管理.虽然文件中的FTP密码似乎是加密的,但存储的安全性如何?可以由第三方进行逆向设计吗?

deployment version-control publishing visual-studio-2010

14
推荐指数
1
解决办法
2908
查看次数