难以用语言解释,所以我将提供一个例子.
我想在Razor中输出这个(但是它的剃刀是无关紧要的,我的问题是关于c#):
@SomeClass.SomeClass.SomeClass.ID.ToString()
Run Code Online (Sandbox Code Playgroud)
任何SomeClass都可以为null(这是一个外部api,我实际上没有影响)
所以我尝试了这个:
@functions{
private string Safe(Func<string> val, string defaultValue)
{
try
{
return val.Invoke();
}
catch(NullReferenceException ex)
{
return defaultValue;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后这个:
@Safe(SomeClass.SomeClass.SomeClass.ID.ToString, "value not found")
Run Code Online (Sandbox Code Playgroud)
但是没有雪茄......有没有办法实现这一目标?谢谢.
UPDATE1:使用NullReferenceException显然要多得多.
你应该通过整个电话:
@Safe(() => SomeClass.SomeClass.SomeClass.ID.ToString(), "value not found")
Run Code Online (Sandbox Code Playgroud)
你必须这样做的原因是因为现在异常将在你的方法中发生.否则它会在它到达ToString方法之前抛出NullReferenceException.
归档时间: |
|
查看次数: |
78 次 |
最近记录: |