假设有以下批处理文件
set variable1=this is variable1
set variable2=is
set variable3=test
if variable1 contains variable2 (
echo YES
) else (
echo NO
)
if variable1 contains variable3 (
echo YES
) else (
echo NO
)
Run Code Online (Sandbox Code Playgroud)
我希望输出为YES,然后是NO
我正在尝试掌握.NET Generics的概念,并在我自己的代码中实际使用它们,但我一直遇到问题.
有人可以尝试向我解释为什么以下设置无法编译?
public class ClassA
{
ClassB b = new ClassB();
public void MethodA<T>(IRepo<T> repo) where T : ITypeEntity
{
b.MethodB(repo);
}
}
public class ClassB
{
IRepo<ITypeEntity> repo;
public void MethodB(IRepo<ITypeEntity> repo)
{
this.repo = repo;
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
无法从IRepo <'T>转换为IRepo <'ITypeEntity>
使用IRepo <'DetailType>对象参数调用MethodA,其中DetailType继承自ITypeEntity.
我一直认为这应该编译,因为我将MethodA中的T限制为ITypeEntity类型.
任何想法或反馈都会非常有帮助.
谢谢.
编辑:尼克R有一个很好的建议,但不幸的是在我的背景下,我没有选择制作ClassA Generic.但是ClassB可能会.
在以下方法中,我想访问Action中包含的任何可选参数:
public static class ValidatorEngine
{
public static void Validate(Action someMethodWithOptionalArguments)
{
object target = someMethodWithOptionalArguments.Target;
}
}
Run Code Online (Sandbox Code Playgroud)
所以如果我这样调用这个方法:
ValidatorEngine.Validate(() => UpdateByModel(model));
Run Code Online (Sandbox Code Playgroud)
我希望能够访问传递给Action的模型参数.我甚至都不想调用这个Action.
我认为可以使用Action的Target属性完成某些操作,因为我可以在调试时看到模型.我无法以编程方式弄明白.
我可能会做一些奇怪的事情,但不确定。我正在尝试在安装了IIS Express的Windows XP计算机上配置TeamCity构建代理。我想创建一个将启动IIS Express的构建步骤,然后再另一个将其停止的构建步骤。
我可以创建一个命令行构建步骤,以使用类似于以下命令的方式启动IIS Express实例:
"C:\Program Files\IIS Express\iisexpress.exe" /path:%1\src\Web /port:80 /systray:false
Run Code Online (Sandbox Code Playgroud)
这将启动服务器,但随后我的日志显示“输入'Q'以停止IIS Express”,并且该步骤等待。我不想等待构建步骤。我希望构建可以进行下一步。
有人对此有任何想法吗?