强制转换返回类型
本文关键字:返回类型 转换 | 更新日期: 2023-09-27 18:15:07
我想使用PostSharp跟随代码:
class Program
{
[PostModerator]
public static ReturnState<Person> GetPerson()
{
return new ReturnState<Person>() { Result = new Person { Id = 2, Name = "Gholzam" }, Succeed = true };
}
static void Main(string[] args)
{
var personAttempt= GetPerson();
Console.WriteLine("Test ok");
Console.ReadKey();
}
}
在PostModerator中我使用以下代码:
[Serializable]
public class PostModeratorAttribute : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs args)
{
args.ReturnValue = new ReturnState<object> { Succeed=false };//Star
args.FlowBehavior = FlowBehavior.Return;
for (int counter = 0; counter < args.Arguments.Count; counter++)
{
Console.WriteLine("arg{0} is {1}",counter,args.Arguments[counter]);
}
Console.WriteLine("On Entry");
}
}
当我返回new ReturnState<object>..
和Postshop尝试转换为ReturnState<Person>
时,我已经cast异常,但不能。
是的,那是因为您创建的是ReturnState<object>
,而不是ReturnState<Person>
。
选项:
- 更改
PostModerateAttribute
以找出正确的返回类型,并创建一个实例。 - 硬编码
PostModerateAttribute
返回ReturnState<Person>
- 将对象的返回类型(和表达式)更改为
ReturnState<object>