我知道C#支持数组中的协方差,如下所示:
object[] array = new string[3];
Run Code Online (Sandbox Code Playgroud)
但是当我尝试编译下面的代码时,我遇到了错误
class Dummy<K,T> where T:K
{
public void foo()
{
K[] arr = new T[4];
}
}
Run Code Online (Sandbox Code Playgroud)
它说"不能隐式地将类型'T []'转换为'K []'"
为什么我收到这个错误???
我基本上都在努力教自己如何编码,我想遵循良好的做法.单元测试有明显的好处.在单元测试方面也有很多狂热,我更喜欢更实用的编码和生活方法.作为上下文,我正在编写我的第一个"真实"应用程序,它是使用asp.net MVC的无处不在的博客引擎.我通过自己的调整松散地遵循MVC店面架构.因此,这是我第一次真正涉足嘲弄对象.我将把代码示例放在问题的最后.
我很感激任何洞察力或外部资源,我可以用它来增加我对测试和模拟基础的理解.我在网上找到的资源通常是针对模拟的"方式",我需要更多地了解模拟的地点,原因和时间.如果这不是提出这个问题的最佳地点,请指出一个更好的地方.
我试图理解我从以下测试中获得的价值.UserService依赖于IUserRepository.服务层的价值是将逻辑与数据存储分开,但在这种情况下,大多数UserService调用只是直接传递给IUserRepository.没有太多实际逻辑需要测试的事实也可能是我担忧的根源.我有以下问题.
我正在使用NUnit和Rhino.Mocks,但我应该很清楚我要完成的事情.
[SetUp]
public void Setup()
{
userRepo = MockRepository.GenerateMock<IUserRepository>();
userSvc = new UserService(userRepo);
theUser = new User
{
ID = null,
UserName = "http://joe.myopenid.com",
EmailAddress = "joe@joeblow.com",
DisplayName = "Joe Blow",
Website = "http://joeblow.com"
};
}
[Test]
public void UserService_can_create_a_new_user()
{
// Arrange
userRepo.Expect(repo => repo.CreateUser(theUser)).Return(true);
// Act
bool result = userSvc.CreateUser(theUser);
// Assert
userRepo.VerifyAllExpectations();
Assert.That(result, Is.True,
"UserService.CreateUser(user) failed when it should have succeeded");
}
[Test]
public void UserService_can_not_create_an_existing_user()
{
// Arrange
userRepo.Stub(repo …Run Code Online (Sandbox Code Playgroud) 给定运营合同,例如:
[OperationContract]
void Operation(string param1, string param2, int param3);
Run Code Online (Sandbox Code Playgroud)
这可以重新设计为:
[MessageContract]
public class OperationRequest
{
[MessageBodyMember]
public string Param1 { get; set; }
[MessageBodyMember]
public string Param2 { get; set; }
[MessageBodyMember]
public int Param3 { get; set; }
}
[MessageContract]
public class OperationResponse
{
}
[OperationContract]
OperationResponse Operation(OperationRequest request);
Run Code Online (Sandbox Code Playgroud)
我喜欢MessageContract的一件事是我对SOAP消息的格式有了更明确的控制.
同样,我可以编写几乎相同的代码,但使用DataContract:
[DataContract]
public class OperationRequest
{
[DataMember]
public string Param1 { get; set; }
[DataMember]
public string Param2 { get; set; }
[DataMember]
public int Param3 { get; set; …Run Code Online (Sandbox Code Playgroud) 嗨我需要在drupal中创建一个模块来显示一些数据,而不是一个drupal开发人员,在阅读了几个教程后,我似乎无法显示任何内容.
我有下一个代码:
<?php
function helloworld_perm() {
return array('access helloworld content');
}
function helloworld_listado(){
return "yea";
}
function helloworld_menu(){
$items = array();
$items["listado"] = array(
'title' => t('Listado de empresas'),
'callback' => 'helloworld_listado',
'access' => array('access helloworld content'),
'type' => MENU_NORMAL_ITEM
);
return $items;
}
Run Code Online (Sandbox Code Playgroud)
当我输入/ listado时,我获得拒绝访问您无权访问此页面.
知道我做错了什么吗?如果我转到admin-> module-> permissions,我已检查所有角色的权限以访问hellowold内容.
泰!
我最近在python中发现了元类.
基本上python中的元类是一个创建类的类.有许多有用的理由可以解释为什么要这样做 - 例如任何类的初始化.在工厂上注册类,复杂的属性验证,改变继承的工作方式等等.所有这些不仅可能而且简单.
但在python中,元类也是普通类.所以,我开始想知道抽象是否可以有效地走高,而且在我看来它可以和那样:
我在网上找到了一些关于这个的东西,但大多数都不是很有用.一个问题是不同的语言稍微不同地定义了元类.
有没有其他人在python /其他地方使用过像这样的元类,或者看到过在野外使用过的,还是想过它?其他语言有哪些类似物?例如,在C++中,模板递归有多深?
我非常想进一步研究它.
我的特殊问题:
我有一个字符串,它在配置类中指定了aribitrary类型
Config.numberType = "System.Foo";
在哪里Foo是类型Decimal或Double
我Type.GetType(Config.numberType)用来返回相应的类型.
如何从该类型中获得能够使用System.Foo.TryParse()?
一些其他相关的查询
TryParse()可以从System.Foo.TryParse()以及访问foo.TryParse().这是否意味着fooC#中的某种类?这对我来说似乎很奇怪int,double等等实际上不仅仅是修饰符关键字.var似乎并非普遍可用,即仅在本地范围等.在WPF,ASP.NET,WinForms中,我创建了一个按钮,双击它并填写事件处理程序.
在Silverlight(使用Visual Web Developer 2008)中,我创建了一个按钮,双击它但没有任何反应.
出于某种原因编写Silverlight应用程序时是否不支持此功能?我们是否必须手工编写这些事件处理程序?
任何人都可以向我解释ungetch的目的吗?这是来自K&R第4章,您可以在其中创建反向波兰计算器.
我没有调用ungetch就运行了程序,在我的测试中它仍然可以正常工作.
int getch(void) /* get a (possibly pushed back) character */
{
if (bufp > 0)
{
return buf[--bufp];
}
else
{
return getchar();
}
}
void ungetch(int c) /* push character back on input */
{
if (bufp >= BUFSIZE)
{
printf("ungetch: too many characters\n");
}
else
{
buf[bufp++] = c;
}
}
Run Code Online (Sandbox Code Playgroud)
(我已经删除了getch中的三元运算符以使其更清晰.)
我是一个有点经验的Rails开发人员,我想我会试用ASP.NET的MVC版本.这样做我还决定尝试Linq-> Sql ...
我对Linq-> Sql处理连接的方式感到有点困惑.
我的架构的一个简单例子是:
书籍:
id
标题
类别:
id
名称
books_categories:
book_id
category_id
只需将这些表拖到.dbml文件中就好了.我在Book class books_categories上获得了一个属性,我期望的是一个属性,我可以迭代并直接获得Category类.
现在我必须做一些感觉非常错误的事情
foreach (books_categories bc in book.books_categories)
{
category_names.Add(bc.Category.category.Trim());
}
Run Code Online (Sandbox Code Playgroud)
[回复接受的答案]
我勉强接受了"编写自己的胶水代码"的答案.在继续我对Linq-> Sql的研究之后,我发现它显然正在慢慢放弃(更强大的IMO)实体框架.EF仍允许使用LINQ进行查询,并且可以很好地找出像Ruby的ActiveRecord这样的关系.
c# ×3
.net ×1
asp.net ×1
asp.net-mvc ×1
c ×1
cocoa-touch ×1
covariance ×1
datacontract ×1
drupal ×1
factory ×1
generics ×1
join ×1
kr-c ×1
linq-to-sql ×1
many-to-many ×1
metaclass ×1
mocking ×1
parsing ×1
python ×1
silverlight ×1
types ×1
unit-testing ×1
wcf ×1
web-services ×1
winforms ×1
wpf ×1