我有一个方法接受System.Object类型的参数obj
现在我想检查一下obj的实际类型是:
我想到的第一种方式是:
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)
有没有更好的办法?
C#4.0编译器生成的IL可以在CLR 2.0上运行吗?
为了澄清,我不是在询问VS 2010多目标(VS选择正确的编译器版本),我想知道csc.exe 4.0是否支持多目标...
我想了解为什么在.NET上有九个整数类型:Char
,Byte
,SByte
,Int16
,UInt16
,Int32
,UInt32
,Int64
,和UInt64
; 再加上其他的数字类型:Single
,Double
,Decimal
,并且所有这些类型都没有任何关系.
当我第一次开始使用C#进行编码时,我认为"很酷,有一种uint
类型,我会在不允许使用负值时使用它".然后我意识到不使用API uint
但int
代替,而uint
不是衍生自int
,所以需要的转化率.
这些类型的真实应用是什么?为什么不相反,integer
而且positiveInteger
?这些是我能理解的类型.一个人的年龄是一个positiveInteger
,并且因为是预期的转换需要positiveInteger
的子集.integer
integer
以下是XPath 2.0和XQuery 1.0中的类型层次结构图.如果你看看下面xs:anyAtomicType
,你可以看到数字层次decimal
> integer
> long
> int
> short
> byte
.为什么.NET不是这样设计的?新框架"奥斯陆"会有所不同吗?
在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命令的插件菜单.
如果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功能的主题的链接.
我有一个增量构建设置,如下所示:
<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 文件。请注意,在目标中我首先删除然后包含此文件。
$(MyOutput)
“自上次最新检查以来已被修改”。如何在第二次构建中获得“一切都是最新的”结果?
有效WCF返回类型的列表是什么?我知道一些,但我想知道所有这些:
作废?波苏斯?
我创建了一个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) 我在codeplex上找到了mvc 3 rtm项目.RTM代表什么?这个源代码是否与今天MVC 3使用的内容相匹配?
我在寻找匹配路线方面遇到了一些麻烦.
我使用base-32编码的int作为Web应用程序中幻灯片的短链接.每个幻灯片有5个不同版本,我使用首字母来区分每个版本.
路由始终匹配,除非base-32编码的int的第一个字符与指定幻灯片版本的字符相同.所有5个前缀字母都存在此异常:n,f,c,x和h.
前两个字符相同会使这些路线不匹配?我无法理解这里发生了什么(当路线不匹配时,它们只会达到默认值).
路线匹配(/na0
):
路线不匹配(/nn0
):
路线匹配(/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节),这些 …
.net ×4
asp.net-mvc ×3
c# ×3
asp.net ×2
asp.net-core ×1
csproj ×1
dbext ×1
ienumerable ×1
msbuild ×1
overloading ×1
primitive ×1
routes ×1
routing ×1
vim ×1
vim-plugin ×1
wcf ×1