Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有任何工具可以将所有字段转换为一组.cs文件中的属性?_C#_Asp.net_.net_Roslyn - Fatal编程技术网

C# 是否有任何工具可以将所有字段转换为一组.cs文件中的属性?

C# 是否有任何工具可以将所有字段转换为一组.cs文件中的属性?,c#,asp.net,.net,roslyn,C#,Asp.net,.net,Roslyn,是否有将字段转换为属性的工具 我的项目中有许多字段,手动将所有字段转换为属性需要很长时间。您可以使用Visual studio代码段为您生成代码 只需键入prop并按TAB键, 它将为您创建骨架。您只需提供属性的名称和类型。太简单了。你有内置的。当我想要生成代码文件时,我通常只使用XSLT或控制台应用程序。您还可以使用一些工具来进行比现成的更复杂的重构。内置的你会发现重构 你可以用roslyn api来实现这一点。你可以构建一个小型c#应用程序,将roslyn api添加到其中,用roslyn打

是否有将字段转换为属性的工具


我的项目中有许多字段,手动将所有字段转换为属性需要很长时间。

您可以使用Visual studio代码段为您生成代码

只需键入prop并按TAB键,
它将为您创建骨架。您只需提供属性的名称和类型。太简单了。

你有内置的。当我想要生成代码文件时,我通常只使用XSLT或控制台应用程序。您还可以使用一些工具来进行比现成的更复杂的重构。内置的你会发现重构

你可以用roslyn api来实现这一点。你可以构建一个小型c#应用程序,将roslyn api添加到其中,用roslyn打开winform和asp.net项目,然后做你想做的事情

首先创建获取文件并返回新文件的类

public class FieldToPropertyConverter: CSharpSyntaxRewriter
{
 FieldToPropertyConverter(string YourSolutionFilePath)
{
    OpenSolution( YourSolutionFilePath);
}
public void OpenSolution(string path)
{
    // OPEN your solution here
}
public Solution s ;
public void Convent()
{
     foreach ( var p in s.Projects)
         foreach ( var d in p.Documents)
         {
              var cus = Visit(d.GetSyntaxRootAsync().Result);
              // save cus to solution
         }
         // save you set solution to your work space
}
public override SyntaxNode VisitFieldDeclarationSyntax( FieldDeclarationSyntax f)
{
     PropertyDeclaractionSyntax p =SyntaxFactory.PropertyDeclaraction( f.Declaraction.Type, f.Declaraction.Variables.First().Identifier);
    return p;
} 
}
你可以像这样使用这个类

 FieldToPropertyConverter c = new FieldToPropertyConverter("solutionFilePath");
c.Convent();
c.Save();

您使用的是
publicpropertyname{get;set;}
语法吗?这并不需要很长时间来编写。为什么要创建字段,只需使用自动属性,执行
public bool Foo{get;set;}
这样做有具体的原因吗?我的项目VSDiagnostics()有一个代码修复程序,可以将非常量/静态公共/内部字段更改为属性。Analyzer实现:创建一个新属性——它不使用现有字段中的任何信息。