我如何以编程方式从运行.exe的机器获取MSBuild的路径?
我可以从环境中获取.NET版本但是有没有办法为.NET版本获取正确的文件夹?
我正在学习C#,我遇到了以下问题.我有两个类:base和derived:
class MyBase
{
public void MyMethod()
{
Console.WriteLine("MyBase::MyMethod()");
}
}
class MyDerived: MyBase
{
public void MyMethod()
{
Console.WriteLine("MyDerived::MyMethod()");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,没有virtual和override关键词.当我编译它时,我得到警告(当然是预期的)我试图隐藏MyMethod在MyBase课堂上.
我想要做的是从具有派生类实例的基类调用该方法.我是这样做的:
MyDerived myDerived = new MyDerived();
((MyBase)myDerived).MyMethod();
Run Code Online (Sandbox Code Playgroud)
当我没有virtual在方法中指定任何等关键字时,它工作正常.我试着把关键字组合起来,得到了以下结果:
| MyBase::MyMethod | MyDerived::MyMethod | Result printed on the console |
| -----------------|---------------------|-------------------------------|
| - | - | MyBase::MyMethod() |
| - | new | MyBase::MyMethod() |
| virtual | new | MyBase::MyMethod() |
| virtual | override | …Run Code Online (Sandbox Code Playgroud) 我有以下帮助方法:
public static T CreateRequest<T>()
where T : Request, new()
{
T request = new T();
// ...
// Assign default values, etc.
// ...
return request;
}
Run Code Online (Sandbox Code Playgroud)
我想从另一个帮助器中的另一个方法内部使用此方法:
public T Map<F, T>(F value, T toValue)
where T : new()
where F : new()
{
if (typeof(T).BaseType.FullName == "MyNamespace.Request")
{
toValue = MyExtensions.CreateRequest<T>();
}
else
{
toValue = new T();
}
}
Run Code Online (Sandbox Code Playgroud)
但后来我得到了错误:
类型'T'不能用作泛型类型或方法'MyExtensions.CreateRequest()'中的类型参数'T'.从'T'到'MyNamespace.Request'没有装箱转换或类型参数转换.
有没有办法转换类型"T",以便CreateRequest将使用它没有问题?
编辑:
我知道我可以做两件事:
但我不能做第一个,因为在CreateRequest中我是Request类的用户属性,而我不能做第二个,因为我使用其他类型(不从Request继承)和Map函数.
我是SVN的初学者.我有这样的SVN目录结构:
|-trunk
|-file1.php
|-file2.php
|-branches
|-branch_1
|-file1.php
|-file2.php
|-branch_2
|-file1.php
|-file2.php
Run Code Online (Sandbox Code Playgroud)
在后台我有我的应用程序的主要版本.我有两个分支用于不同的客户端,仅在某些文件中有修改.当我发现一些核心错误时,我将它固定在trunk中.比如我修改了file1.php在trunk目录中.我想对file1.php所有分支中指定的文件应用更改.
我有点困惑.在使用Subversion的版本控制中,我找到了以下解释.
Subversion的存储库有一个特殊的设计.复制目录时,您不必担心存储库增长巨大 - Subversion实际上并不复制任何数据.相反,它会创建一个指向现有树的新目录条目.
所以我虽然当我在文件中提交更改时,trunk\file1.php它将自动应用于其他file1.php文件,因为我没有对branches目录中的文件进行任何更改.
如何将trunk目录中的更改应用到所有分支?我试图这样使用svn merge:
svn merge -r 31:32 http://mysvnserver.com/project/branches/branch_1
Run Code Online (Sandbox Code Playgroud)
但我没有做任何更改(svn diff -r 31:32返回我所做的所有更改.)
我正在和Kohana一起开始使用PHPUnit.我的应用程序有许多控制器,它只是从某种形式获取数据,验证和插入/更新/删除到/ - /从数据库.我应该如何为此编写测试用例.
我知道如果我想测试一个函数,我会编写数据提供程序函数,只是将返回值与预期函数进行比较.但我的输入数据(来自表单的数据)正在$_POST变量中传递.我该怎么测试呢?之后,我应该检查插入的数据是否真的在数据库中?请给出我对这类测试的一些指导或链接到一些示例/教程.谢谢.
有没有办法在SpecFlow功能文件中重用数据?例如,我有两个场景,它们都使用相同的数据表:
Scenario: Some scenario 1
Given I have a data table
| Field Name | Value |
| Name | "Tom" |
| Age | 16 |
When ...
Scenario: Some scenario 2
Given I have a data table
| Field Name | Value |
| Name | "Tom" |
| Age | 16 |
And I have another data table
| Field Name | Value |
| Brand | "Volvo" |
| City | "London" |
When ...
Run Code Online (Sandbox Code Playgroud)
在这些简单的例子中,表格很小并且没有大问题,但在我的情况下,表格有20多行,每个表格至少用于5次. …
我想使用PHP从MySQL数据库导出数据和结构.我知道SELECT INTO OUTFILE命令,但我想让文件像在导出窗口中由PhpMyAdmin生成的文件,所以所有CREATE TABLE和INSERT INTO.
你知道PhpMyAdmn如何生成这些文件吗?我正在浏览代码,我在其中找到了命令SELECT INTO OUTFILE.但是我不确定这个命令是用来生成那个结构的.是否有其他命令可以执行此操作,或者使用有关表模式的信息手动创建导出的文件?
我有可重用HTTPHandler的问题.我想查看该IsReusable物业是如何运作的.所以我创建了两个处理程序:
可重复使用:
public class ReusableHandler : IHttpHandler
{
public bool IsReusable
{
get { return true; }
}
private int _counter;
public ReusableHandler()
{
_counter = 0;
}
public void ProcessRequest(HttpContext context)
{
context.Response.Write("Reusable: " + _counter++);
}
}
Run Code Online (Sandbox Code Playgroud)
而不是可重复使用的:
public class NonReusableHandler : IHttpHandler
{
public bool IsReusable
{
get { return false; }
}
private int _counter;
public NonReusableHandler()
{
_counter = 0;
}
public void ProcessRequest(HttpContext context)
{
context.Response.Write("NonReusable: " + _counter++);
}
}
Run Code Online (Sandbox Code Playgroud)
它们都按预期工作:每次返回递增值时可重用,而NonReusable每次返回0.但是当我使用我的处理程序作为WebHandlers(*.ashx)时,它们每次都返回0(代码完全相同).这是否意味着当我使用WebHandlers时,该 …
我想单元测试我的函数,它基本上从一组参数(TypeScript代码)构建一个observable数组:
private BuildObservables(parameters: Parameter[]) {
var observables = {};
for (var parameterName in parameters) {
var p = parameters[parameterName];
// Build observable
observables[parameterName] = ko.observable(p.Value);
// Attach validation
if (p.IsRequired) {
observables[parameterName].extend({ required: true });
}
}
return observables;
}
Run Code Online (Sandbox Code Playgroud)
我的测试看起来像这样:
var parameters = [];
// new Parameter(int value, bool isRequired)
parameters["Param1"] = new Parameter("123", true);
parameters["Param2"] = new Parameter("456", false);
var viewModel = BuildObservables(parameters);
ok(viewModel["Param1"] != null);
ok(viewModel["Param2"] != null);
Run Code Online (Sandbox Code Playgroud)
如果第一个参数isRequired设置为true,如何检查是否应用了扩展(验证)(BuildObservables中的"附加验证"部分)?
编辑:
在另一个功能我附加订阅者,我不知道如何测试他们是否正确附加.
对于许多开发人员来说ASP.NET和ASP.NET Web Forms是相同的东西.有一段时间我一直在使用Web窗体,但最近我了解到Web窗体只构建在ASP.NET之上.我更好奇一个简单的ASP.NET应用程序是如何看起来的.我学习了3种ASP.NET编程模型:Web表单,Web页面和MVC(这里 Scott Hanselman简要解释了这些差异).但它仍然认为所有3种方法都位于ASP.NET之上.
我试图找到一个使用纯ASP.NET的示例应用程序,但我找不到任何东西.
我开始深入研究ASP.NET网页的源代码,我发现每个网页实际上都是HTTP Handler(每个页面都实现了IHTTPHandler接口).这是否意味着纯ASP.NET应用程序只是一个HTTP Handler实现?或者我错过了什么.
在我的理解中,ASP.NET Web窗体对应于桌面世界中的Win Forms.但在桌面世界中,您仍然可以编写不使用Win Forms的控制台应用程序.那么网络世界中的控制台应用程序是什么呢?
任何评论或参考赞赏.提前致谢.
asp.net ×2
c# ×2
php ×2
.net ×1
base ×1
casting ×1
controller ×1
cucumber ×1
export ×1
httphandler ×1
inheritance ×1
knockout.js ×1
kohana ×1
merge ×1
msbuild ×1
mysql ×1
overriding ×1
phpmyadmin ×1
phpunit ×1
post ×1
specflow ×1
svn ×1
types ×1