C# 如何提取委托参数传递的参数

C# 如何提取委托参数传递的参数,c#,parameters,delegates,helpers,C#,Parameters,Delegates,Helpers,我尝试在MVC中构建一个助手。我尝试像这样传递参数: @Html.InputHandler(settings => { settings.Name = "Julio"; settings.Mask = "000-000-000"; settings.visible = false; settings.Label = true; settings.htmlAttributes = new { @class="form-control" } }) 我有

我尝试在MVC中构建一个助手。我尝试像这样传递参数:

@Html.InputHandler(settings =>
{
    settings.Name = "Julio";
    settings.Mask = "000-000-000";
    settings.visible = false;
    settings.Label = true;
    settings.htmlAttributes = new { @class="form-control" }
})
我有以下定义参数的代码

public delegate void Action<in T>(T obj);

public class InputSettings : SettingsBase
{
    public string Name { get; set; }
    public bool Label { get; set; }
    public string Binding { get; set; }
    public bool visible { get; set; }
    public object htmlAttributes { get; set; }
    public string Mask { get; set; }
}
public delegate void Action(T obj);
公共类输入设置:设置数据库
{
公共字符串名称{get;set;}
公共布尔标签{get;set;}
公共字符串绑定{get;set;}
公共布尔可见{get;set;}
公共对象htmlAttributes{get;set;}
公共字符串掩码{get;set;}
}
问题是我无法从帮助器中获取传递的值

public static MvcHtmlString InputHandler(this HtmlHelper htmlHelper, Action<InputSettings> method)
    {
        var parameters = method. ???        
        return new MvcHtmlString("");
    }
public static MvcHtmlString-InputHandler(此htmlhelp-htmlhelp-Action方法)
{
var参数=方法???
返回新的MvcHtmlString(“”);
}

谢谢你

为了检索主体(因为在您尝试检索主体时,主体已经被编译并JIT’ed到一个完全不同的状态),您需要一个
表达式。但是,不能将lambda语句体转换为表达式树。因此,最好将强类型对象作为Func传递,然后立即返回结果

void Main()
{
    InputHandler(() => new InputSettings {
        Name = "Test1",
        Mask = "test mask"
    }); 
}

public static MvcHtmlString InputHandler(this HtmlHelper htmlHelper, 
    Func<InputSettings> method)
{
    var parameters = method();        
    return new MvcHtmlString("");
}
void Main()
{
InputHandler(()=>新的InputSettings{
Name=“Test1”,
Mask=“测试掩码”
}); 
}
PUTHANDLER中的公共静态MvcHtmlString(此HtmlHelper HtmlHelper,
Func法)
{
var参数=方法();
返回新的MvcHtmlString(“”);
}