我正在尝试创建一个通用扩展,使用'TryParse'来检查字符串是否是给定类型:
public static bool Is<T>(this string input)
{
T notUsed;
return T.TryParse(input, out notUsed);
}
Run Code Online (Sandbox Code Playgroud)
这将无法编译,因为它无法解析符号'TryParse'
据我了解,'TryParse'不是任何界面的一部分.
这有可能吗?
更新:
使用下面的答案,我想出了:
public static bool Is<T>(this string input)
{
try
{
TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(input);
}
catch
{
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
它运作得很好,但我认为以这种方式使用异常对我来说感觉不对.
UPDATE2:
修改为传递类型而不是使用泛型:
public static bool Is(this string input, Type targetType)
{
try
{
TypeDescriptor.GetConverter(targetType).ConvertFromString(input);
return true;
}
catch
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud) 有没有办法手动重启Visual Studio 2010(可能还有2008年但不是那么重要)并保持当前状态(即所有打开的解决方案/项目和文件)?基本上与安装扩展时相同的操作和Visual Studio要求重新启动自身.在文件夹重命名/移动,引用更改或GUI编辑器引发抖动之后,Visual Studio偶尔会感到困惑,因此能够快速重新启动解决方案/项目而不是关闭Visual Studio,重新打开并加载解决方案/再次投射.
visual-studio-2010 visual-studio visual-studio-2013 visual-studio-2015 visual-studio-2017
我正在尝试使用AutoMapper深度克隆以下类:
public class MainData
{
public MainData()
{
Details = new List<Detail>();
}
public int Id { get; private set; }
public DateTime LastUpdate { get; private set; }
public IList<Detail> Details { get; private set; }
public int Prop1 { get; set; }
public int Prop2 { get; set; }
public void AddDetail(Detail detail)
{
Details.Add(detail);
}
public void RemoveDetail(Detail detail)
{
Details.Remove(detail);
}
public MainData Clone()
{
Mapper.Reset();
Mapper.CreateMap<MainData, MainData>().ForMember(d => d.Id, o => o.Ignore());
// Mapper.CreateMap<Detail, Detail>().ForMember(d …
Run Code Online (Sandbox Code Playgroud) CREATE TABLE [LB].[Orders]
(
[OrderID] [bigint] IDENTITY(1,1) NOT NULL,
[OrderDate] [date] NOT NULL,
[Status] [nvarchar](max) NULL,
CONSTRAINT [PK_MasterOrderID]
PRIMARY KEY CLUSTERED ([OrderID] ASC)
)
CREATE NONCLUSTERED INDEX [PK_Index]
ON [BTP_NYA].[LB].[Orders] ([OrderDate]);
CREATE UNIQUE NONCLUSTERED INDEX [IX_OrderID_OrderDate]
ON [BTP_NYA].[LB].[Orders] ([OrderDate],[OrderID]);
Run Code Online (Sandbox Code Playgroud)
我想加快这个查询:
SELECT * FROM [BTP_NYA].[XX].[Orders] WHERE [OrderDate] = '20170921' AND [OrderID] = 62192
Run Code Online (Sandbox Code Playgroud)
为什么这个查询不使用我的IX_OrderID_OrderDate索引?我怎么能更快?
<?xml version="1.0" encoding="utf-16"?>
<ShowPlanXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.2" Build="12.0.4232.0" xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan">
<BatchSequence>
<Batch>
<Statements>
<StmtSimple StatementCompId="1" StatementEstRows="1" StatementId="1" StatementOptmLevel="TRIVIAL" CardinalityEstimationModelVersion="120" StatementSubTreeCost="0.0032831" StatementText="SELECT * FROM [BTP_NYA].[LB].[Orders] WHERE [OrderDate]=@1 AND [OrderID]=@2" …
Run Code Online (Sandbox Code Playgroud) 我使用VS2008/VS2010与Resharper 5,TortoiseSVN 1.6.8.19260-x64和AnkhSVN 2.1.8420.8.我在Visual Studio中执行的大多数操作都在SVN中很好地反映了,但是,当我尝试提交更改时,重命名项目中的文件夹会导致问题.此外,还需要更新重命名文件夹下的C#源文件中的所有命名空间以反映名称更改.
重命名主项目文件夹或任何子文件夹的最佳方法是什么,并确保SVN没有问题?它应该在Visual Studio之外完成吗?
更新所有命名空间更改的最佳方法是什么?搜索/替换是唯一的方法吗?
有关文件夹名称及其内容的最佳做法吗?
如何在 C# 9.0 中打开对记录关键字的支持?
当我尝试使用 newrecord
关键字(或init
)时,我在 Visual Studio 中收到意外的令牌错误。
我错过了什么?还是 Visual Studio 16.8 不支持 C# 9.0?
public record Person
{
public string? FirstName { get; init; }
public string? LastName { get; init; }
}
Run Code Online (Sandbox Code Playgroud)
更新:只需阅读标记的答案。下面的信息最终对这个问题并不重要,这里仅用于文档目的。
我正在使用 Visual Studio 16.8,9.0
在我的项目文件中将语言设置为。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<LangVersion>9.0</LangVersion>
<TargetFramework>net5.0</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591</NoWarn>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="3.1.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
</ItemGroup>
</Project> …
Run Code Online (Sandbox Code Playgroud) 是否有与 VS 2022 和 Windows Pro 10 操作系统兼容的免费支架着色扩展?我在 VS 2019 中使用了 Viasfora,但它尚未在 VS 2022 中使用。我检查了Manage Extensions中的免费扩展选项,据我所知没有,但我希望我错了。在托管扩展中,我发现了一个名为IndentRainbow的工具,但它为缩进空间添加颜色,而不是为括号添加颜色。我在 google 上搜索了 Bracket Pair Colorizer,但它不能作为 VS 2022 扩展提供,而且我无法从其站点安装它 - 当我单击“安装”时,什么也没有发生。
我有一个包含大量属性的类,其中包含一些计算结果,例如:
public class Results
{
public double Result1 { get; set; }
public double Result2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在另一个类中,我正在进行计算以填充上述属性,例如:
public class Calc
{
private Results Calc()
{
Results res = new Results();
res.Result1 = ... some calculation
res.Result2 = ... some other calculation
res.Result3 = ... // not yet defined in 'Results' class
return res;
}
}
Run Code Online (Sandbox Code Playgroud)
当我编写Calc
课程时,Result3
将以红色突出显示,因为它尚未在Results
课程中定义.
目前我正在使用Resharper ALT+ Enter快捷方式,选择"创建属性'Result3'",这将在Results
类中创建以下代码:
public double Result3
{
get { throw …
Run Code Online (Sandbox Code Playgroud) 我有许多包含这样的表的静态类:
using System;
using System.Data;
using System.Globalization;
public static class TableFoo
{
private static readonly DataTable ItemTable;
static TableFoo()
{
ItemTable = new DataTable("TableFoo") { Locale = CultureInfo.InvariantCulture };
ItemTable.Columns.Add("Id", typeof(int));
ItemTable.Columns["Id"].Unique = true;
ItemTable.Columns.Add("Description", typeof(string));
ItemTable.Columns.Add("Data1", typeof(int));
ItemTable.Columns.Add("Data2", typeof(double));
ItemTable.Rows.Add(0, "Item 1", 1, 1.0);
ItemTable.Rows.Add(1, "Item 2", 1, 1.0);
ItemTable.Rows.Add(2, "Item 3", 2, 0.75);
ItemTable.Rows.Add(3, "Item 4", 4, 0.25);
ItemTable.Rows.Add(4, "Item 5", 1, 1.0);
}
public static DataTable GetItemTable()
{
return ItemTable;
}
public static int Data1(int id)
{ …
Run Code Online (Sandbox Code Playgroud) 我正在使用C#中的winforms创建一个GUI,所有控件都有很多事件.我想知道哪些事件被解雇以及何时被解雇.一种方法是将调试语句放在每个事件处理程序上,但这需要太多的工作.有没有办法在Visual Studio 2008/2010中执行此操作,还是有任何可以帮助的工具?
目前,我正在使用Visual Studio 2012和VST的SSDTBI为SQL Server 2012创建SSIS包.这很好用(但SSIS包设计器中存在很多错误).
微软刚刚发布了针对VS2013的SSDTBI,并且想知道这是否只适用于SQL Server 2014.我是否能够编辑我在VS2012中创建的相同SSIS包,并且仍然可以在SQL Server 2012中使用它们?
更新:从这篇博客来看,似乎SQL Server 2012的SSIS仍然存在问题.
ssis sql-server-2012 visual-studio-2012 visual-studio-2013 sql-server-2014
我最近从 Visual Studios 2019 更新到 Visual Studios 2022
在 Visual Studios 2019 的早期版本中,我能够在单行函数上设置断点,但只需将断点放在函数定义本身处即可,如下所示:
然而,安装到 2022 年之后,现在这个空间已被一个新按钮占据,这阻碍了我的尝试
有什么方法可以删除这些新添加的“已实现的成员”按钮,或者在它们之上添加断点?
c# ×8
resharper ×2
.net ×1
ankhsvn ×1
automapper ×1
brackets ×1
clone ×1
colors ×1
data-access ×1
datatable ×1
generics ×1
list ×1
sql-server ×1
ssis ×1
svn ×1
tortoisesvn ×1
tryparse ×1
winforms ×1