小编Pie*_*ers的帖子

通用TryParse

我正在尝试创建一个通用扩展,使用'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)

c# generics tryparse

191
推荐指数
7
解决办法
7万
查看次数

如何手动重启Visual Studio?

有没有办法手动重启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

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

如何使用AutoMapper深度克隆包含IList属性的对象

我正在尝试使用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)

c# clone list automapper valueinjecter

13
推荐指数
2
解决办法
5817
查看次数

为什么查询不使用我的索引?

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)

sql-server

13
推荐指数
2
解决办法
1290
查看次数

使用SVN时在Visual Studio中更改文件夹名称

我使用VS2008/VS2010与Resharper 5,TortoiseSVN 1.6.8.19260-x64和AnkhSVN 2.1.8420.8.我在Visual Studio中执行的大多数操作都在SVN中很好地反映了,但是,当我尝试提交更改时,重命名项目中的文件夹会导致问题.此外,还需要更新重命名文件夹下的C#源文件中的所有命名空间以反映名称更改.

重命名主项目文件夹或任何子文件夹的最佳方法是什么,并确保SVN没有问题?它应该在Visual Studio之外完成吗?

更新所有命名空间更改的最佳方法是什么?搜索/替换是唯一的方法吗?

有关文件夹名称及其内容的最佳做法吗?

c# svn tortoisesvn ankhsvn visual-studio

11
推荐指数
1
解决办法
2308
查看次数

在 Visual Studio 中支持 C# 9.0

如何在 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)

c# resharper visual-studio

10
推荐指数
1
解决办法
3217
查看次数

Visual Studio 括号着色

是否有与 VS 2022 和 Windows Pro 10 操作系统兼容的免费支架着色扩展?我在 VS 2019 中使用了 Viasfora,但它尚未在 VS 2022 中使用。我检查了Manage Extensions中的免费扩展选项,据我所知没有,但我希望我错了。在托管扩展中,我发现了一个名为IndentRainbow的工具,但它为缩进空间添加颜色,而不是为括号添加颜色。我在 google 上搜索了 Bracket Pair Colorizer,但它不能作为 VS 2022 扩展提供,而且我无法从其站点安装它 - 当我单击“安装”时,什么也没有发生。

brackets colors visual-studio-2022

9
推荐指数
2
解决办法
7885
查看次数

使用Visual Studio 2008/2010或Resharper 5创建自动属性的快捷方式

我有一个包含大量属性的类,其中包含一些计算结果,例如:

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)

c# resharper keyboard-shortcuts visual-studio

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

从数据表中获取单个值的最佳方法?

我有许多包含这样的表的静态类:

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)

.net c# datatable data-access

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

如何查看/监视用户界面上的控件正在触发哪些事件

我正在使用C#中的winforms创建一个GUI,所有控件都有很多事件.我想知道哪些事件被解雇以及何时被解雇.一种方法是将调试语句放在每个事件处理程序上,但这需要太多的工作.有没有办法在Visual Studio 2008/2010中执行此操作,还是有任何可以帮助的工具?

c# visual-studio winforms

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

用于Visual Studio 2013的SSDTBI是否可以与SQL Server 2012一起使用?

目前,我正在使用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

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

Visual Studio 2022 由于 UI 无法在函数标题上设置断点

我最近从 Visual Studios 2019 更新到 Visual Studios 2022

在 Visual Studios 2019 的早期版本中,我能够在单行函数上设置断点,但只需将断点放在函数定义本身处即可,如下所示:

Visual Studios 2019 函数断点

然而,安装到 2022 年之后,现在这个空间已被一个新按钮占据,这阻碍了我的尝试

Visual Studio 2022无法在函数上设置断点

有什么方法可以删除这些新添加的“已实现的成员”按钮,或者在它们之上添加断点?

c# visual-studio-2022

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