Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dotNET Platform
runtime
提交
ea4ebaa3
R
runtime
项目概览
dotNET Platform
/
runtime
11 个月 前同步成功
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
runtime
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
ea4ebaa3
编写于
3月 23, 2022
作者:
M
Maksym Koshovyi
提交者:
GitHub
3月 23, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Improve nullable annotations for `ILogger.BeginScope` (#66960)
* BeginScope can return a null IDisposable. And TState is not nullable.
上级
2724b7ef
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
27 addition
and
27 deletion
+27
-27
src/libraries/Microsoft.Extensions.Logging.Abstractions/ref/Microsoft.Extensions.Logging.Abstractions.cs
...ractions/ref/Microsoft.Extensions.Logging.Abstractions.cs
+12
-12
src/libraries/Microsoft.Extensions.Logging.Abstractions/src/ILogger.cs
.../Microsoft.Extensions.Logging.Abstractions/src/ILogger.cs
+1
-1
src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerExtensions.cs
...t.Extensions.Logging.Abstractions/src/LoggerExtensions.cs
+1
-1
src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerMessage.cs
...soft.Extensions.Logging.Abstractions/src/LoggerMessage.cs
+7
-7
src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerT.cs
.../Microsoft.Extensions.Logging.Abstractions/src/LoggerT.cs
+1
-1
src/libraries/Microsoft.Extensions.Logging.Abstractions/src/NullLogger.cs
...crosoft.Extensions.Logging.Abstractions/src/NullLogger.cs
+1
-1
src/libraries/Microsoft.Extensions.Logging.Abstractions/src/NullLoggerT.cs
...rosoft.Extensions.Logging.Abstractions/src/NullLoggerT.cs
+1
-1
src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/MockLogger.cs
...crosoft.Extensions.Logging.Generators.Tests/MockLogger.cs
+1
-1
src/libraries/Microsoft.Extensions.Logging/src/Logger.cs
src/libraries/Microsoft.Extensions.Logging/src/Logger.cs
+1
-1
src/libraries/Microsoft.Extensions.Logging/src/LoggerInformation.cs
...ies/Microsoft.Extensions.Logging/src/LoggerInformation.cs
+1
-1
未找到文件。
src/libraries/Microsoft.Extensions.Logging.Abstractions/ref/Microsoft.Extensions.Logging.Abstractions.cs
浏览文件 @
ea4ebaa3
...
...
@@ -28,7 +28,7 @@ public partial interface IExternalScopeProvider
}
public
partial
interface
ILogger
{
System
.
IDisposable
BeginScope
<
TState
>(
TState
state
)
;
System
.
IDisposable
?
BeginScope
<
TState
>(
TState
state
)
where
TState
:
notnull
;
bool
IsEnabled
(
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
);
void
Log
<
TState
>(
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
,
Microsoft
.
Extensions
.
Logging
.
EventId
eventId
,
TState
state
,
System
.
Exception
?
exception
,
System
.
Func
<
TState
,
System
.
Exception
?,
string
>
formatter
);
}
...
...
@@ -55,7 +55,7 @@ public partial class LogDefineOptions
}
public
static
partial
class
LoggerExtensions
{
public
static
System
.
IDisposable
BeginScope
(
this
Microsoft
.
Extensions
.
Logging
.
ILogger
logger
,
string
messageFormat
,
params
object
?[]
args
)
{
throw
null
;
}
public
static
System
.
IDisposable
?
BeginScope
(
this
Microsoft
.
Extensions
.
Logging
.
ILogger
logger
,
string
messageFormat
,
params
object
?[]
args
)
{
throw
null
;
}
public
static
void
Log
(
this
Microsoft
.
Extensions
.
Logging
.
ILogger
logger
,
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
,
Microsoft
.
Extensions
.
Logging
.
EventId
eventId
,
System
.
Exception
?
exception
,
string
?
message
,
params
object
?[]
args
)
{
}
public
static
void
Log
(
this
Microsoft
.
Extensions
.
Logging
.
ILogger
logger
,
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
,
Microsoft
.
Extensions
.
Logging
.
EventId
eventId
,
string
?
message
,
params
object
?[]
args
)
{
}
public
static
void
Log
(
this
Microsoft
.
Extensions
.
Logging
.
ILogger
logger
,
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
,
System
.
Exception
?
exception
,
string
?
message
,
params
object
?[]
args
)
{
}
...
...
@@ -100,13 +100,13 @@ public static partial class LoggerMessage
{
public
static
System
.
Action
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
System
.
Exception
?>
Define
(
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
,
Microsoft
.
Extensions
.
Logging
.
EventId
eventId
,
string
formatString
)
{
throw
null
;
}
public
static
System
.
Action
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
System
.
Exception
?>
Define
(
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
,
Microsoft
.
Extensions
.
Logging
.
EventId
eventId
,
string
formatString
,
Microsoft
.
Extensions
.
Logging
.
LogDefineOptions
?
options
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
System
.
IDisposable
>
DefineScope
(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
System
.
IDisposable
>
DefineScope
<
T1
>(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
T2
,
System
.
IDisposable
>
DefineScope
<
T1
,
T2
>(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
T2
,
T3
,
System
.
IDisposable
>
DefineScope
<
T1
,
T2
,
T3
>(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
T2
,
T3
,
T4
,
System
.
IDisposable
>
DefineScope
<
T1
,
T2
,
T3
,
T4
>(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
T2
,
T3
,
T4
,
T5
,
System
.
IDisposable
>
DefineScope
<
T1
,
T2
,
T3
,
T4
,
T5
>(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
System
.
IDisposable
>
DefineScope
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
>(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
System
.
IDisposable
?
>
DefineScope
(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
System
.
IDisposable
?
>
DefineScope
<
T1
>(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
T2
,
System
.
IDisposable
?
>
DefineScope
<
T1
,
T2
>(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
T2
,
T3
,
System
.
IDisposable
?
>
DefineScope
<
T1
,
T2
,
T3
>(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
T2
,
T3
,
T4
,
System
.
IDisposable
?
>
DefineScope
<
T1
,
T2
,
T3
,
T4
>(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
T2
,
T3
,
T4
,
T5
,
System
.
IDisposable
?
>
DefineScope
<
T1
,
T2
,
T3
,
T4
,
T5
>(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Func
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
System
.
IDisposable
?
>
DefineScope
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
>(
string
formatString
)
{
throw
null
;
}
public
static
System
.
Action
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
System
.
Exception
?>
Define
<
T1
>(
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
,
Microsoft
.
Extensions
.
Logging
.
EventId
eventId
,
string
formatString
)
{
throw
null
;
}
public
static
System
.
Action
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
System
.
Exception
?>
Define
<
T1
>(
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
,
Microsoft
.
Extensions
.
Logging
.
EventId
eventId
,
string
formatString
,
Microsoft
.
Extensions
.
Logging
.
LogDefineOptions
?
options
)
{
throw
null
;
}
public
static
System
.
Action
<
Microsoft
.
Extensions
.
Logging
.
ILogger
,
T1
,
T2
,
System
.
Exception
?>
Define
<
T1
,
T2
>(
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
,
Microsoft
.
Extensions
.
Logging
.
EventId
eventId
,
string
formatString
)
{
throw
null
;
}
...
...
@@ -134,7 +134,7 @@ public sealed partial class LoggerMessageAttribute : System.Attribute
public
partial
class
Logger
<
T
>
:
Microsoft
.
Extensions
.
Logging
.
ILogger
,
Microsoft
.
Extensions
.
Logging
.
ILogger
<
T
>
{
public
Logger
(
Microsoft
.
Extensions
.
Logging
.
ILoggerFactory
factory
)
{
}
System
.
IDisposable
Microsoft
.
Extensions
.
Logging
.
ILogger
.
BeginScope
<
TState
>(
TState
state
)
{
throw
null
;
}
System
.
IDisposable
?
Microsoft
.
Extensions
.
Logging
.
ILogger
.
BeginScope
<
TState
>(
TState
state
)
{
throw
null
;
}
bool
Microsoft
.
Extensions
.
Logging
.
ILogger
.
IsEnabled
(
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
)
{
throw
null
;
}
void
Microsoft
.
Extensions
.
Logging
.
ILogger
.
Log
<
TState
>(
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
,
Microsoft
.
Extensions
.
Logging
.
EventId
eventId
,
TState
state
,
System
.
Exception
?
exception
,
System
.
Func
<
TState
,
System
.
Exception
?,
string
>
formatter
)
{
}
}
...
...
@@ -168,7 +168,7 @@ public partial class NullLogger : Microsoft.Extensions.Logging.ILogger
{
internal
NullLogger
()
{
}
public
static
Microsoft
.
Extensions
.
Logging
.
Abstractions
.
NullLogger
Instance
{
get
{
throw
null
;
}
}
public
System
.
IDisposable
BeginScope
<
TState
>(
TState
state
)
{
throw
null
;
}
public
System
.
IDisposable
BeginScope
<
TState
>(
TState
state
)
where
TState
:
notnull
{
throw
null
;
}
public
bool
IsEnabled
(
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
)
{
throw
null
;
}
public
void
Log
<
TState
>(
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
,
Microsoft
.
Extensions
.
Logging
.
EventId
eventId
,
TState
state
,
System
.
Exception
?
exception
,
System
.
Func
<
TState
,
System
.
Exception
?,
string
>
formatter
)
{
}
}
...
...
@@ -191,7 +191,7 @@ public partial class NullLogger<T> : Microsoft.Extensions.Logging.ILogger, Micro
{
public
static
readonly
Microsoft
.
Extensions
.
Logging
.
Abstractions
.
NullLogger
<
T
>
Instance
;
public
NullLogger
()
{
}
public
System
.
IDisposable
BeginScope
<
TState
>(
TState
state
)
{
throw
null
;
}
public
System
.
IDisposable
BeginScope
<
TState
>(
TState
state
)
where
TState
:
notnull
{
throw
null
;
}
public
bool
IsEnabled
(
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
)
{
throw
null
;
}
public
void
Log
<
TState
>(
Microsoft
.
Extensions
.
Logging
.
LogLevel
logLevel
,
Microsoft
.
Extensions
.
Logging
.
EventId
eventId
,
TState
state
,
System
.
Exception
?
exception
,
System
.
Func
<
TState
,
System
.
Exception
?,
string
>
formatter
)
{
}
}
...
...
src/libraries/Microsoft.Extensions.Logging.Abstractions/src/ILogger.cs
浏览文件 @
ea4ebaa3
...
...
@@ -35,6 +35,6 @@ public interface ILogger
/// <param name="state">The identifier for the scope.</param>
/// <typeparam name="TState">The type of the state to begin scope for.</typeparam>
/// <returns>An <see cref="IDisposable"/> that ends the logical operation scope on dispose.</returns>
IDisposable
BeginScope
<
TState
>(
TState
state
)
;
IDisposable
?
BeginScope
<
TState
>(
TState
state
)
where
TState
:
notnull
;
}
}
src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerExtensions.cs
浏览文件 @
ea4ebaa3
...
...
@@ -402,7 +402,7 @@ public static void Log(this ILogger logger!!, LogLevel logLevel, EventId eventId
/// {
/// }
/// </example>
public
static
IDisposable
BeginScope
(
public
static
IDisposable
?
BeginScope
(
this
ILogger
logger
!!,
string
messageFormat
,
params
object
?[]
args
)
...
...
src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerMessage.cs
浏览文件 @
ea4ebaa3
...
...
@@ -18,7 +18,7 @@ public static class LoggerMessage
/// </summary>
/// <param name="formatString">The named format string</param>
/// <returns>A delegate which when invoked creates a log scope.</returns>
public
static
Func
<
ILogger
,
IDisposable
>
DefineScope
(
string
formatString
)
public
static
Func
<
ILogger
,
IDisposable
?
>
DefineScope
(
string
formatString
)
{
LogValuesFormatter
formatter
=
CreateLogValuesFormatter
(
formatString
,
expectedNamedParameterCount
:
0
);
...
...
@@ -33,7 +33,7 @@ public static class LoggerMessage
/// <typeparam name="T1">The type of the first parameter passed to the named format string.</typeparam>
/// <param name="formatString">The named format string</param>
/// <returns>A delegate which when invoked creates a log scope.</returns>
public
static
Func
<
ILogger
,
T1
,
IDisposable
>
DefineScope
<
T1
>(
string
formatString
)
public
static
Func
<
ILogger
,
T1
,
IDisposable
?
>
DefineScope
<
T1
>(
string
formatString
)
{
LogValuesFormatter
formatter
=
CreateLogValuesFormatter
(
formatString
,
expectedNamedParameterCount
:
1
);
...
...
@@ -47,7 +47,7 @@ public static class LoggerMessage
/// <typeparam name="T2">The type of the second parameter passed to the named format string.</typeparam>
/// <param name="formatString">The named format string</param>
/// <returns>A delegate which when invoked creates a log scope.</returns>
public
static
Func
<
ILogger
,
T1
,
T2
,
IDisposable
>
DefineScope
<
T1
,
T2
>(
string
formatString
)
public
static
Func
<
ILogger
,
T1
,
T2
,
IDisposable
?
>
DefineScope
<
T1
,
T2
>(
string
formatString
)
{
LogValuesFormatter
formatter
=
CreateLogValuesFormatter
(
formatString
,
expectedNamedParameterCount
:
2
);
...
...
@@ -62,7 +62,7 @@ public static class LoggerMessage
/// <typeparam name="T3">The type of the third parameter passed to the named format string.</typeparam>
/// <param name="formatString">The named format string</param>
/// <returns>A delegate which when invoked creates a log scope.</returns>
public
static
Func
<
ILogger
,
T1
,
T2
,
T3
,
IDisposable
>
DefineScope
<
T1
,
T2
,
T3
>(
string
formatString
)
public
static
Func
<
ILogger
,
T1
,
T2
,
T3
,
IDisposable
?
>
DefineScope
<
T1
,
T2
,
T3
>(
string
formatString
)
{
LogValuesFormatter
formatter
=
CreateLogValuesFormatter
(
formatString
,
expectedNamedParameterCount
:
3
);
...
...
@@ -78,7 +78,7 @@ public static class LoggerMessage
/// <typeparam name="T4">The type of the fourth parameter passed to the named format string.</typeparam>
/// <param name="formatString">The named format string</param>
/// <returns>A delegate which when invoked creates a log scope.</returns>
public
static
Func
<
ILogger
,
T1
,
T2
,
T3
,
T4
,
IDisposable
>
DefineScope
<
T1
,
T2
,
T3
,
T4
>(
string
formatString
)
public
static
Func
<
ILogger
,
T1
,
T2
,
T3
,
T4
,
IDisposable
?
>
DefineScope
<
T1
,
T2
,
T3
,
T4
>(
string
formatString
)
{
LogValuesFormatter
formatter
=
CreateLogValuesFormatter
(
formatString
,
expectedNamedParameterCount
:
4
);
...
...
@@ -95,7 +95,7 @@ public static class LoggerMessage
/// <typeparam name="T5">The type of the fifth parameter passed to the named format string.</typeparam>
/// <param name="formatString">The named format string</param>
/// <returns>A delegate which when invoked creates a log scope.</returns>
public
static
Func
<
ILogger
,
T1
,
T2
,
T3
,
T4
,
T5
,
IDisposable
>
DefineScope
<
T1
,
T2
,
T3
,
T4
,
T5
>(
string
formatString
)
public
static
Func
<
ILogger
,
T1
,
T2
,
T3
,
T4
,
T5
,
IDisposable
?
>
DefineScope
<
T1
,
T2
,
T3
,
T4
,
T5
>(
string
formatString
)
{
LogValuesFormatter
formatter
=
CreateLogValuesFormatter
(
formatString
,
expectedNamedParameterCount
:
5
);
...
...
@@ -113,7 +113,7 @@ public static class LoggerMessage
/// <typeparam name="T6">The type of the sixth parameter passed to the named format string.</typeparam>
/// <param name="formatString">The named format string</param>
/// <returns>A delegate which when invoked creates a log scope.</returns>
public
static
Func
<
ILogger
,
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
IDisposable
>
DefineScope
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
>(
string
formatString
)
public
static
Func
<
ILogger
,
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
IDisposable
?
>
DefineScope
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
>(
string
formatString
)
{
LogValuesFormatter
formatter
=
CreateLogValuesFormatter
(
formatString
,
expectedNamedParameterCount
:
6
);
...
...
src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerT.cs
浏览文件 @
ea4ebaa3
...
...
@@ -25,7 +25,7 @@ public Logger(ILoggerFactory factory!!)
}
/// <inheritdoc />
IDisposable
ILogger
.
BeginScope
<
TState
>(
TState
state
)
IDisposable
?
ILogger
.
BeginScope
<
TState
>(
TState
state
)
{
return
_logger
.
BeginScope
(
state
);
}
...
...
src/libraries/Microsoft.Extensions.Logging.Abstractions/src/NullLogger.cs
浏览文件 @
ea4ebaa3
...
...
@@ -20,7 +20,7 @@ private NullLogger()
}
/// <inheritdoc />
public
IDisposable
BeginScope
<
TState
>(
TState
state
)
public
IDisposable
BeginScope
<
TState
>(
TState
state
)
where
TState
:
notnull
{
return
NullScope
.
Instance
;
}
...
...
src/libraries/Microsoft.Extensions.Logging.Abstractions/src/NullLoggerT.cs
浏览文件 @
ea4ebaa3
...
...
@@ -17,7 +17,7 @@ public class NullLogger<T> : ILogger<T>
public
static
readonly
NullLogger
<
T
>
Instance
=
new
NullLogger
<
T
>();
/// <inheritdoc />
public
IDisposable
BeginScope
<
TState
>(
TState
state
)
public
IDisposable
BeginScope
<
TState
>(
TState
state
)
where
TState
:
notnull
{
return
NullScope
.
Instance
;
}
...
...
src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/MockLogger.cs
浏览文件 @
ea4ebaa3
...
...
@@ -35,7 +35,7 @@ public MockLogger()
Reset
();
}
public
IDisposable
BeginScope
<
TState
>(
TState
state
)
public
IDisposable
BeginScope
<
TState
>(
TState
state
)
where
TState
:
notnull
{
return
new
Disposable
();
}
...
...
src/libraries/Microsoft.Extensions.Logging/src/Logger.cs
浏览文件 @
ea4ebaa3
...
...
@@ -111,7 +111,7 @@ static bool LoggerIsEnabled(LogLevel logLevel, ILogger logger, ref List<Exceptio
}
}
public
IDisposable
BeginScope
<
TState
>(
TState
state
)
public
IDisposable
?
BeginScope
<
TState
>(
TState
state
)
where
TState
:
notnull
{
ScopeLogger
[]?
loggers
=
ScopeLoggers
;
...
...
src/libraries/Microsoft.Extensions.Logging/src/LoggerInformation.cs
浏览文件 @
ea4ebaa3
...
...
@@ -57,7 +57,7 @@ public ScopeLogger(ILogger? logger, IExternalScopeProvider? externalScopeProvide
public
IExternalScopeProvider
?
ExternalScopeProvider
{
get
;
}
public
IDisposable
CreateScope
<
TState
>(
TState
state
)
public
IDisposable
?
CreateScope
<
TState
>(
TState
state
)
where
TState
:
notnull
{
if
(
ExternalScopeProvider
!=
null
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录