我将 API 定义为我们将调用的接口,IFoo我想定义一个方法Bar()
此方法Bar()将接受一个必需的参数,然后是任意数量的其他参数。这些其他参数的解释将取决于实现者IFoo
对于这种情况,使用params或使用Dictionary<String, Object>例如定义我的界面更合适
public interface IFoo
{
bool Bar(String id, params Object[] params);
}
Run Code Online (Sandbox Code Playgroud)
或者
public interface IFoo
{
bool Bar(String id, Dictionary<String, Object> params);
}
Run Code Online (Sandbox Code Playgroud)
似乎前者更容易让用户调用,但后者的意图更明确,因为对于前者,您必须以特定顺序指定参数,以便实现正确解释它们,而对于后者,您本质上是做命名参数。
所以问题:
作为记录,我知道.Net 4.0 中的命名参数,但此代码需要在 .Net 3.5 上编译,因此不能使用任何 .Net 4.0+ 功能
只是为了添加更多关于 myIFoo和Bar()methods 实际代表的细节,因为有人问。
IFoo代表一些存储子系统,Bar()实际上是一个创建操作。根据存储子系统的不同,Bar()除了 ID 之外可能不需要其他参数,也可能需要许多参数。
所以为了回应@Kirk Woll 的评论和@Fernando 的回答,这里有更多信息。
我可能永远不会调用 …
我对jquery相当新,我认为这很简单,但我很挣扎,谷歌似乎没有帮助....
我所拥有的是基本形式......
<form>
First Name: < input type="text" name="firstName" id="firstName" />
Surname: < input type="text" name="surname" id="surname" />
<input type="submit" id="submit" value="submit"/>
</form>
Run Code Online (Sandbox Code Playgroud)
现在,当点击提交时,我想转到一个网址但是然后将froms值添加到url字符串(但不使用表单方法= get)基本上我希望这发生
点击提交转到 http://myurl.com/index.html?params=firstNamevalue*surnamevalue
我一直在用jquery进行攻击,但是我最喜欢的就是这样......
< script src="http://www.google.com/jsapi" type="text/javascript">< /script>
< script type="text/javascript">
google.load("jquery", "1.3.1");
</script>
< script type="text/javascript">
var = firstName $("#firstName").val();
var = surname $("#surname").val();
$('#submit').click(function(){
window.location = ???;
});
< /script>
Run Code Online (Sandbox Code Playgroud)
希望我一直很清楚 - 我非常感谢任何帮助!
安迪
假设我有两个功能:
Foo(params INotifyPropertyChanged[] items)
{
//do stuff
}
Foo<T>(IEnumerable<T> items) where T : INotifyPropertyChanged
{
Foo(items.ToArray());
}
Run Code Online (Sandbox Code Playgroud)
第二个允许我Foo从具有约束的泛型类调用where T : INotifyPropertyChanged,但第二个解析为自身,因此我得到堆栈溢出异常.
params从泛型类调用函数的方法,假设泛型类型的约束使其成为该params类型的可行选项?提前致谢!
如果我有一个带params参数的方法,它可以通过引用传递,并在每次调用yield时更新.
像这样的东西:
public static void GetRowsIter(ref params valuesToUpdate)
{
foreach(row in rows)
{
foreach(param in valuesToUpdate
{
GetValueForParam(param)
}
yield;
}
}
Run Code Online (Sandbox Code Playgroud)
这合法吗?(我离开了我的编译器,或者我只是尝试一下.)
我正在使用GSP发送基于MailService插件的电子邮件.sendMail关闭传递(以及其他)body(view:..., model:myModel)
我知道我只能${itemName}在GSP中使用myModel Map的每个项目.但是,由于我有时想动态地构建项目名称'item'+i,我需要有一些周围的方法来访问变量.
我已经尝试了${model.get('item'+i),${params.get('item'+i)但是,模型为null,params是一个空的Map.我也试过了pageScope,但是虽然我可以访问一个项目,但我${pageScope.itemName无法使用,${pageScope.get('item'+i)}因为pageScope不是Map.
可能有多种解决方案可以解决这个问题; 我很高兴一个简单的;-).我看到的一个解决方案是将myModel作为唯一参数传递,然后始终使用myModel.get(...),但这意味着我必须更改所有现有的GSP以始终引用myModel而不是直接访问项目(具有固定名称); 所以如果有一种方法我不必改变传递给GSP的模型,这将是我的最爱.
如果有人也可以在这种情况下对模型和参数的区别说几句话,那么这将是另外有用的!
我看过一些与在Grails中使用g:datePicker相关的帖子.使用它看起来你可以像params.myDate一样从params中选择值.
但是,当我尝试在我看来做这样的事情时:
视图:
<g:link controller="c" action="a" params="[fromDate:(new Date())]">
Run Code Online (Sandbox Code Playgroud)
控制器:
def dateval = params.fromDate as Date
Run Code Online (Sandbox Code Playgroud)
日期未正确解析.我还应该在视图中做些什么来使控制器使日期"可解析".我环顾四周,并没有在任何没有使用datePicker的帖子中找到这个.
可能重复:
如何在Rails测试中使用参数轻松解析URL?
对不起我的英语不好...
我在我的archives.rb模型中获取了一个从html内容中获取所有src属性的方法,我得到src的样子:
http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142
我需要从该URL获取params,具体来说:id,x,y
感谢和问候.
我可以将params参数转发给另一个方法吗?
例如,
void MyStringMethod(string format, params object[] list)
{
String.Format(format, list);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用嵌套的params(通过hansack嵌套为q)和普通的params一起在页面上构建链接,当我尝试将嵌套的params与其他params合并时,我很难让两者完美地玩.
例如,如果我有:
{"freq"=>"weekly", "loan_amount"=>"350000",
"q"=>{"lowEquity_true"=>"1", "s"=>"rate asc"}}
Run Code Online (Sandbox Code Playgroud)
并尝试构建一个链接来更改param"lowEquity_true"
rates_url(params[:q].merge(:lowEquity_true => '0'))
Run Code Online (Sandbox Code Playgroud)
然后我最终得到了下面的新参数,看起来像是更新了q但是丢掉了其余的参数.
{"lowEquity_true"=>"0", "s"=>"rate asc"}
Run Code Online (Sandbox Code Playgroud)
如果我试图将q&merge合并到其他参数中,它不会更新q,只是将q中的内容合并到其他参数中
rates_url(params[:q].merge(:lowEquity_true => '0').merge(params))
{"freq"=>"weekly", "loan_amount"=>"350000", "lowEquity_true"=>"0",
"q"=>{"lowEquity_true"=>"1", "s"=>"rate asc"},
"s"=>"rate asc"}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了各种各样的组合,似乎没有任何地方,所以我确信我错过了一些基本的东西!