C#Lambda转换为VB

时间:2009-12-21 16:13:18

标签: c# vb.net lambda

您好我一直在寻找关于sharparchitecture的某些教程并试图无济于事(在线转换器似乎无法做到这一点):

private Action<AutoMappingExpressions> GetSetup()
{
    return c =>
    {
        c.FindIdentity = type => type.Name == "Id";
    };
}

private Action<IConventionFinder> GetConventions()
{
    return c =>
    {
        c.Add<MVCTemp.Data.NHibernateMaps.Conventions.ForeignKeyConvention>();
        c.Add<MVCTemp.Data.NHibernateMaps.Conventions.HasManyConvention>();
        c.Add<MVCTemp.Data.NHibernateMaps.Conventions.HasManyToManyConvention>();
        c.Add<MVCTemp.Data.NHibernateMaps.Conventions.ManyToManyTableNameConvention>();
        c.Add<MVCTemp.Data.NHibernateMaps.Conventions.PrimaryKeyConvention>();
        c.Add<MVCTemp.Data.NHibernateMaps.Conventions.ReferenceConvention>();
        c.Add<MVCTemp.Data.NHibernateMaps.Conventions.TableNameConvention>();
    };
}

1 个答案:

答案 0 :(得分:4)

我假设您正在尝试将其转换为VB.Net。

直到Visual Basic 2010(目前在beta中),这是不可能的。

VB.Net 2008中的Lambda表达式只能包含一个表达式。

但是,您可以创建执行工作并返回它们的Shared辅助函数。

例如:(在VB中)

Function GetConventions() As Action(Of IConventionFinder) 
    Return AddressOf GetConventionsHelper
End Function

Shared Sub GetConventionsHelper(c As IConventionFinder)
    c.Add(Of MVCTemp.Data.NHibernateMaps.Conventions.ForeignKeyConvention)()
    c.Add(Of MVCTemp.Data.NHibernateMaps.Conventions.HasManyConvention)()
    c.Add(Of MVCTemp.Data.NHibernateMaps.Conventions.HasManyToManyConvention)()
    c.Add(Of MVCTemp.Data.NHibernateMaps.Conventions.ManyToManyTableNameConvention)()
    c.Add(Of MVCTemp.Data.NHibernateMaps.Conventions.PrimaryKeyConvention)()
    c.Add(Of MVCTemp.Data.NHibernateMaps.Conventions.ReferenceConvention)()
    c.Add(Of MVCTemp.Data.NHibernateMaps.Conventions.TableNameConvention)()
End Sub