Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dotNET
Roslyn
提交
bc48af7c
R
Roslyn
项目概览
dotNET
/
Roslyn
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
bc48af7c
编写于
5月 31, 2017
作者:
C
CyrusNajmabadi
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'moveTypeToFile' into addUsingOOP2
上级
ac4e335a
06d68885
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
51 addition
and
51 deletion
+51
-51
src/Features/Core/Portable/AddImport/CodeActions/AssemblyReferenceCodeAction.cs
...able/AddImport/CodeActions/AssemblyReferenceCodeAction.cs
+51
-51
未找到文件。
src/Features/Core/Portable/AddImport/CodeActions/AssemblyReferenceCodeAction.cs
浏览文件 @
bc48af7c
...
...
@@ -16,74 +16,74 @@ namespace Microsoft.CodeAnalysis.CodeFixes.AddImport
{
internal
abstract
partial
class
AbstractAddImportCodeFixProvider
<
TSimpleNameSyntax
>
{
private
class
AssemblyReferenceCodeAction
:
CodeAction
{
private
readonly
ReferenceAssemblyWithTypeResult
_referenceAssemblyWithType
;
private
readonly
string
_title
;
private
readonly
Document
_document
;
private
readonly
ImmutableArray
<
TextChange
>
_textChanges
;
private
class
AssemblyReferenceCodeAction
:
CodeAction
{
private
readonly
ReferenceAssemblyWithTypeResult
_referenceAssemblyWithType
;
private
readonly
string
_title
;
private
readonly
Document
_document
;
private
readonly
ImmutableArray
<
TextChange
>
_textChanges
;
public
override
string
Title
=>
_title
;
public
override
string
Title
=>
_title
;
public
override
ImmutableArray
<
string
>
Tags
=>
WellKnownTagArrays
.
AddReference
;
public
override
ImmutableArray
<
string
>
Tags
=>
WellKnownTagArrays
.
AddReference
;
private
readonly
Lazy
<
string
>
_lazyResolvedPath
;
private
readonly
Lazy
<
string
>
_lazyResolvedPath
;
public
AssemblyReferenceCodeAction
(
string
title
,
ReferenceAssemblyWithTypeResult
referenceAssemblyWithType
,
Document
document
,
ImmutableArray
<
TextChange
>
textChanges
)
{
_referenceAssemblyWithType
=
referenceAssemblyWithType
;
_document
=
document
;
_textChanges
=
textChanges
;
public
AssemblyReferenceCodeAction
(
string
title
,
ReferenceAssemblyWithTypeResult
referenceAssemblyWithType
,
Document
document
,
ImmutableArray
<
TextChange
>
textChanges
)
{
_referenceAssemblyWithType
=
referenceAssemblyWithType
;
_document
=
document
;
_textChanges
=
textChanges
;
_title
=
title
;
_lazyResolvedPath
=
new
Lazy
<
string
>(
ResolvePath
);
}
_title
=
title
;
_lazyResolvedPath
=
new
Lazy
<
string
>(
ResolvePath
);
}
// Adding a reference is always low priority.
internal
override
CodeActionPriority
Priority
=>
CodeActionPriority
.
Low
;
// Adding a reference is always low priority.
internal
override
CodeActionPriority
Priority
=>
CodeActionPriority
.
Low
;
private
string
ResolvePath
()
{
var
assemblyResolverService
=
_document
.
Project
.
Solution
.
Workspace
.
Services
.
GetService
<
IFrameworkAssemblyPathResolver
>();
private
string
ResolvePath
()
{
var
assemblyResolverService
=
_document
.
Project
.
Solution
.
Workspace
.
Services
.
GetService
<
IFrameworkAssemblyPathResolver
>();
var
fullyQualifiedName
=
string
.
Join
(
"."
,
_referenceAssemblyWithType
.
ContainingNamespaceNames
.
Concat
(
_referenceAssemblyWithType
.
TypeName
));
var
fullyQualifiedName
=
string
.
Join
(
"."
,
_referenceAssemblyWithType
.
ContainingNamespaceNames
.
Concat
(
_referenceAssemblyWithType
.
TypeName
));
var
assemblyPath
=
assemblyResolverService
?.
ResolveAssemblyPath
(
_document
.
Project
.
Id
,
_referenceAssemblyWithType
.
AssemblyName
,
fullyQualifiedName
);
var
assemblyPath
=
assemblyResolverService
?.
ResolveAssemblyPath
(
_document
.
Project
.
Id
,
_referenceAssemblyWithType
.
AssemblyName
,
fullyQualifiedName
);
return
assemblyPath
;
}
return
assemblyPath
;
}
internal
override
bool
PerformFinalApplicabilityCheck
=>
true
;
internal
override
bool
PerformFinalApplicabilityCheck
=>
true
;
internal
override
bool
IsApplicable
(
Workspace
workspace
)
=>
!
string
.
IsNullOrWhiteSpace
(
_lazyResolvedPath
.
Value
);
internal
override
bool
IsApplicable
(
Workspace
workspace
)
=>
!
string
.
IsNullOrWhiteSpace
(
_lazyResolvedPath
.
Value
);
protected
override
async
Task
<
IEnumerable
<
CodeActionOperation
>>
ComputeOperationsAsync
(
CancellationToken
cancellationToken
)
{
var
service
=
_document
.
Project
.
Solution
.
Workspace
.
Services
.
GetService
<
IMetadataService
>();
var
resolvedPath
=
_lazyResolvedPath
.
Value
;
var
reference
=
service
.
GetReference
(
resolvedPath
,
MetadataReferenceProperties
.
Assembly
);
protected
override
async
Task
<
IEnumerable
<
CodeActionOperation
>>
ComputeOperationsAsync
(
CancellationToken
cancellationToken
)
{
var
service
=
_document
.
Project
.
Solution
.
Workspace
.
Services
.
GetService
<
IMetadataService
>();
var
resolvedPath
=
_lazyResolvedPath
.
Value
;
var
reference
=
service
.
GetReference
(
resolvedPath
,
MetadataReferenceProperties
.
Assembly
);
var
oldText
=
await
_document
.
GetTextAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
var
newText
=
oldText
.
WithChanges
(
_textChanges
);
var
oldText
=
await
_document
.
GetTextAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
var
newText
=
oldText
.
WithChanges
(
_textChanges
);
var
newDocument
=
_document
.
WithText
(
newText
);
var
newDocument
=
_document
.
WithText
(
newText
);
// Now add the actual assembly reference.
var
newProject
=
newDocument
.
Project
;
newProject
=
newProject
.
WithMetadataReferences
(
newProject
.
MetadataReferences
.
Concat
(
reference
));
// Now add the actual assembly reference.
var
newProject
=
newDocument
.
Project
;
newProject
=
newProject
.
WithMetadataReferences
(
newProject
.
MetadataReferences
.
Concat
(
reference
));
var
operation
=
new
ApplyChangesOperation
(
newProject
.
Solution
);
return
SpecializedCollections
.
SingletonEnumerable
<
CodeActionOperation
>(
operation
);
var
operation
=
new
ApplyChangesOperation
(
newProject
.
Solution
);
return
SpecializedCollections
.
SingletonEnumerable
<
CodeActionOperation
>(
operation
);
}
}
}
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录