小编Max*_*oro的帖子

测试Type是否为集合的最佳方法

我有一个方法接受System.Object类型的参数obj

现在我想检查一下obj的实际类型是:

  • 集合类型(IEnumerable).
  • 还要别的吗.

我想到的第一种方式是:

if (obj is IEnumerable) 
   // obj is a collection
Run Code Online (Sandbox Code Playgroud)

但System.String实现IEnumerable,我不想将字符串视为集合.

我认为第二种方法是测试ICollection而不是IEnumerable,因为IEnumerable更像是一个潜在的集合而不是实际的集合.这将省去字符串,但也会遗漏ICollection-Of-T,因为它不继承ICollection(IEnumerable-Of-T是唯一的向后兼容的通用集合抽象 - 它继承了IEnumerable).

所以我想最好的方法是:

if (obj is string) 
  // not a collection
else if (obj is IEnumerable) 
  // collection
else
  // not a collection
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

.net c# ienumerable

6
推荐指数
2
解决办法
4637
查看次数

C#4.0编译器生成的IL可以在CLR 2.0上运行吗?

C#4.0编译器生成的IL可以在CLR 2.0上运行吗?

为了澄清,我不是在询问VS 2010多目标(VS选择正确的编译器版本),我想知道csc.exe 4.0是否支持多目标...

.net c#

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

.NET原语和类型层次结构,为什么它是这样设计的?

我想了解为什么在.NET上有九个整数类型:Char,Byte,SByte,Int16,UInt16,Int32,UInt32,Int64,和UInt64; 再加上其他的数字类型:Single,Double,Decimal,并且所有这些类型都没有任何关系.

当我第一次开始使用C#进行编码时,我认为"很酷,有一种uint类型,我会在不允许使用负值时使用它".然后我意识到不使用API uintint代替,而uint不是衍生自int,所以需要的转化率.

这些类型的真实应用是什么?为什么不相反,integer而且positiveInteger?这些是我能理解的类型.一个人的年龄是一个positiveInteger,并且因为是预期的转换需要positiveInteger的子集.integerinteger

以下是XPath 2.0和XQuery 1.0中的类型层次结构图.如果你看看下面xs:anyAtomicType,你可以看到数字层次decimal> integer> long> int> short> byte.为什么.NET不是这样设计的?新框架"奥斯陆"会有所不同吗?

替代文字

.net c# primitive

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

DBext(Vim) - 必须选择有效的数据库类型

在Windows上安装gvim并尝试运行(Microsoft)sql server查询.当我尝试发出特定于dbext的命令时出错.请参阅下面的详细信息.

Vimrc包含此连接字符串

:let g:dbext_default_profile_mySQLServer  = 'type=SQLSRV:integratedlogin=1:host=XXXXX:dbname=XXXXX'
Run Code Online (Sandbox Code Playgroud)

SQL语句

Select * from XXXXX
Run Code Online (Sandbox Code Playgroud)

命令:

<leader>se (in my case ,se)
Run Code Online (Sandbox Code Playgroud)

错误:"必须选择有效的数据库类型"

有人可以帮我解决gvim + dbext设置中的这个问题.

请注意我的插件安装正确,我看到列出dbext命令的插件菜单.

vim vim-plugin dbext

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

ASP.NET 5名称混淆

如果ASP.NET 5是一个在.NET Core和Full上运行的新运行时,那么当.NET 5发布时,我们应该将当前的ASP.NET或依赖于System.Web的任何东西称为什么?我认为ASP.NET 5从下一版本的.NET获取数字5,它将继续包含并支持System.Web.也许Classic ASP.NET?


@cecilphillip指出.NET的下一个版本是4.6而不是5.那么,5来自哪里?


从历史上看,ASP.NET版本与.NET相同,如本页所述:

  • ASP.NET 4.5.1和Visual Studio 2013
    提供有关.NET Framework 4.5.1和Visual Studio 2013 中的ASP.NET功能的信息.
  • ASP.NET 4.5和Visual Studio 2012
    提供有关.NET Framework 4.5和Visual Studio 2012以及Visual Studio Express 2012 for Web 中的ASP.NET功能的信息.
  • ASP.NET 4和Visual Studio 2010
    提供有关.NET Framework 4和Visual Studio 2010以及Visual Web Developer 2010 Express 中的ASP.NET功能的信息.
  • ASP.NET 3.5和Visual Studio 2008
    提供指向.NET Framework 3.5和Visual Studio 2008以及Visual Web Developer 2008 Express Edition 中描述ASP.NET功能的主题的链接.

asp.net asp.net-core

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

包含编译文件(增量构建)

我有一个增量构建设置,如下所示:

  <ItemGroup>
    <MyInput Include="$(MyInput)" />
    <UpToDateCheckInput Include="@(MyInput)" />
    <UpToDateCheckBuilt Include="$(MyOutput)" />
  </ItemGroup>

  <Target Name="MyCodeGen"
          BeforeTargets="PreBuildEvent"
          DependsOnTargets="ResolveReferences"
          Inputs="@(MyInput);$(MSBuildThisFileFullPath);$(MyCodegenExe)"
          Outputs="$(MyOutput)">
    <Exec Command="$(MyCodegenExe) $(MyCodegenParams)" />
    <ItemGroup>
      <Compile Remove="$(MyOutput)" />
      <Compile Include="$(MyOutput)" />
    </ItemGroup>
  </Target>
Run Code Online (Sandbox Code Playgroud)

目标生成一个$(MyOutput)需要在当前项目中包含和编译的单个 .cs 文件。请注意,在目标中我首先删除然后包含此文件。

  1. 在第一次构建时,目标按预期运行。
  2. 在第二次构建时,目标不会按预期运行。但 MSBuild 仍然可以编译,因为$(MyOutput)“自上次最新检查以来已被修改”。
  3. 在第三次构建时,一切都是最新的。

如何在第二次构建中获得“一切都是最新的”结果?

msbuild csproj visual-studio

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

WCF返回类型

有效WCF返回类型的列表是什么?我知道一些,但我想知道所有这些:

  • 基元类型(字符串,int32等...)
  • 具有DataContract或Serializable属性的复杂类型
  • 信息
  • SyndicationFeedFormatter

作废?波苏斯?

.net wcf

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

Asp.Net MVC - 重载动作方法

我创建了一个asp.net mvc网站

我的问题是如何实现重载动作方法

调节器


    public ActionResult Index(int id)
    {
        //code
        return View(model);
    }

    public ActionResult Index()
    {
        //code  
        return View(model);
    }
Run Code Online (Sandbox Code Playgroud)

视图


    <div id="menucontainer">
            <ul id="menu">          
                    <li><%= Html.ActionLink("Home", "Index", "Home")%></li>
                    <%if (Page.User.Identity.IsAuthenticated)
                      {%>
                    <li><%= Html.ActionLink("Profilo", "Index", "Account")%></li>
                    <%} %>
                    <li><%= Html.ActionLink("About", "About", "Home")%></li>
                </ul>
            </div>
Run Code Online (Sandbox Code Playgroud)

Usercontrol(ascx)插入View中.此用户控件列出了配置文件的朋友(视图)


   <td>
            <%= Html.ActionLink(Html.Encode(item.Nominativo), "Index", "Account", new { id = item.IdAccount }, null)%>
        </td>
Run Code Online (Sandbox Code Playgroud)

全球的asax


    public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", 
                "{controller}/{action}/{id}", 
                new { controller = "Home", action = "Index", id = …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc routes overloading asp.net-mvc-2

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

MVC 3 RTM中的RTM代表什么?

我在codeplex上找到了mvc 3 rtm项目.RTM代表什么?这个源代码是否与今天MVC 3使用的内容相匹配?

asp.net-mvc asp.net-mvc-3

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

为什么这条路线不匹配

我在寻找匹配路线方面遇到了一些麻烦.

我使用base-32编码的int作为Web应用程序中幻灯片的短链接.每个幻灯片有5个不同版本,我使用首字母来区分每个版本.

路由始终匹配,除非base-32编码的int的第一个字符与指定幻灯片版本的字符相同.所有5个前缀字母都存在此异常:n,f,c,x和h.

前两个字符相同会使这些路线不匹配?我无法理解这里发生了什么(当路线不匹配时,它们只会达到默认值).

路线匹配(/na0): na0的路线

路线不匹配(/nn0): nn0的路线

路线匹配(/nfg): nfg的路线

路线不匹配(/ffg): 制造路线

我很难过.这是路由代码,如果在屏幕截图中的RouteDebug表中不清楚:

        routes.MapRoute(
            "NonBrandedSlideshow",
            "n{id}",
            MVC.Slideshow.NonBranded(), null,
            new { id = Settings.Base32Regex }
        );

        routes.MapRoute(
            "FullSlideshow",
            "f{id}",
            MVC.Slideshow.Full(), null,
            new { id = Settings.Base32Regex }
        );

        routes.MapRoute(
            "CompactSlideshow",
            "c{id}",
            MVC.Slideshow.Compact(), null,
            new { id = Settings.Base32Regex }
        );

        routes.MapRoute(
            "FlexibleSlideshow",
            "x{id}",
            MVC.Slideshow.Flexible(), null,
            new { id = Settings.Base32Regex }
        );

        routes.MapRoute(
            "Html5Slideshow",
            "h{id}",
            MVC.Slideshow.NonBrandedHtml5(), null,
            new { id = Settings.Base32Regex }
        );
Run Code Online (Sandbox Code Playgroud)

我在这里应该注意,我使用的是T4MVC(参见第2.2.5节),这些 …

asp.net-mvc routing asp.net-mvc-3

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