0

我试图根据传入的对象类型(在本例中为实体)返回一个整数参数,但不确定格式。请问有什么帮助吗?

entity.ID = db.Create(
                    entity.Name,
                    entity.Description,
                    entity.InitialStep != null ? (int?)entity.InitialStep.ID : null,
                    entity.IsPrivate,
                    entity.AllowOnBehalfSubmission,
                    new Func<int>{something needs to happen here and return an integer});
4

2 回答 2

0

您可以通过以下几种方法指定返回 int 的函数:

1) 指定现有方法

    private int MethodReturningInt() { return 1; }

    db.Create( /* ... */
             MethodReturningInt);  // note: no () !

2)使用委托(匿名方法)

    db.Create( /* ... */
      delegate() { return 1; });

3) 使用 lambda 表达式

    db.Create(/* ... */
      () => 1);

现在您仍然需要根据您的需要调整返回值 (1) ...

于 2012-11-12T11:50:14.240 回答
0

您尝试调用的 lambda 函数需要在与定义相同的上下文中执行。据我了解,您的对象(实体)可以有多种类型,您想根据对象类型设置参数值吗?如果是这样,请按照以下几行修改您的代码:

entity.ID = db.Create(
    entity.Name,
    entity.Description,
    entity.InitialStep != null ? (int?)entity.InitialStep.ID : null,
    entity.IsPrivate,
    entity.AllowOnBehalfSubmission,
    new Func<Type, int?> (type => 
    {
        if (type == typeof(SomeType))
            return 1;
        if (type == typeof(AnotherType))
            return 2;
        return null;
    })(entity.GetType())
);
于 2012-11-12T11:58:44.097 回答