我想使用' Named Arguments'功能作为参数。
有两种方法。
Class temp {
public method(Class1 param);
public method(Class2 param);
};
如果是上述课程,如果我想使用'命名参数调用方法'。我可以像method(param: 'some value');
一样打电话,我想给null
一些价值',所以当我尝试这样的时候,
method(param:null);
我看到了这条消息
以下方法或属性之间的调用不明确: '方法'和'方法'
然后,我意识到这两个(Class1,Class2)非常相似。
所以当我尝试像这样投射时,
method((Class1)param:null);
我在下面留言时失败了。
名称'标识符'在当前上下文中不存在
所以可以'演员'这个' param'参数?
谢谢。
答案 0 :(得分:1)
你这样做:
import org.jbehave.core.configuration.Configuration;
import org.jbehave.core.configuration.MostUsefulConfiguration;
import org.jbehave.core.io.CodeLocations;
import org.jbehave.core.io.LoadFromClasspath;
import org.jbehave.core.io.StoryFinder;
import org.jbehave.core.junit.JUnitStories;
import org.jbehave.core.reporters.StoryReporterBuilder;
import org.jbehave.core.steps.InjectableStepsFactory;
import org.jbehave.core.steps.InstanceStepsFactory;
import java.util.Arrays;
import java.util.List;
import static org.jbehave.core.io.CodeLocations.codeLocationFromClass;
import static org.jbehave.core.reporters.StoryReporterBuilder.Format.CONSOLE;
public class JBehaveStories extends JUnitStories {
@Override
public Configuration configuration() {
return new MostUsefulConfiguration().useStoryLoader(new LoadFromClasspath(this.getClass()))
.useStoryReporterBuilder(new StoryReporterBuilder()
.withCodeLocation(codeLocationFromClass(this.getClass())).withFormats(CONSOLE));
}
@Override
public InjectableStepsFactory stepsFactory() {
return new InstanceStepsFactory(configuration(), new EstimatorSteps());
}
@Override
protected List<String> storyPaths() {
return new StoryFinder().findPaths(CodeLocations.codeLocationFromClass(this.getClass()),
Arrays.asList("**/*.story"), Arrays.asList(""));
}
}
基本上,您需要将MethodName(param: (Class1)null)
强制转换为给定的类型,而不是参数
答案 1 :(得分:0)
为什么不分开这两种方法?
method1(Class1 param)
method2(Class2 param)
或类似的东西:
public method<T>(T param)
{
if(param.GetType() == typeof(Class1))
{
//Do stuff for Class1
Console.WriteLine("Class1");
}
else if (param.GetType() == typeof(Class2))
{
//Do stuff for Class2
Console.WriteLine("Class2");
}
}