小编mo.*_*mo.的帖子

如果我不注意警告"隐藏继承成员.如果使当前成员覆盖该实现......"

这可能是一个很好的观点,但它涉及编译器在您执行以下操作时发出的警告:

class A
{
    public virtual void F() { }
}
class B : A
{
    public void F() { }
}
Run Code Online (Sandbox Code Playgroud)

然后你得到警告:

'EomApp1.B.F()' hides inherited member 'EomApp1.A.F()'.
To make the current member override that implementation, add the override keyword. Otherwise use the new keyword.

错误消息的图像

问题:如果我什么都不做的话,警告我会发生什么警告?如果我添加'new'关键字,那么我的程序功能是否会有所不同?

(注意:我知道我可以很容易地测试这个,但我觉得这里值得问一下)

c# warnings virtual-functions

29
推荐指数
2
解决办法
3万
查看次数

用AutoFac替换出厂

我习惯于创建我自己的工厂(如图所示):

public class ElementFactory
{
    public IElement Create(IHtml dom)
    {
        switch (dom.ElementType)
        {
            case "table":
                return new TableElement(dom);
            case "div":
                return new DivElement(dom);
            case "span":
                return new SpanElement(dom);
        }
        return new PassthroughElement(dom);
    }
}
Run Code Online (Sandbox Code Playgroud)

我终于开始在我当前的项目中使用IoC容器(AutoFac)了,我想知道是否有一些使用AutoFac优雅地实现同样功能的神奇方法?

c# autofac factory-pattern

17
推荐指数
1
解决办法
7734
查看次数

Moq使用匿名类型参数进行验证

我有以下测试,有支持类,但我无法弄清楚如何验证对依赖项的调用.

[TestFixture]
public class AnonymousGenericTypeParameterTests
{
    [Test]
    public void Test()
    {
        // Arrange
        var dependency = new Mock<IDependency>();

        var towns = new List<Town>
        {
            new Town { Name = "Lifford", County = "Donegal", Country="Ireland", Population = 1658 },
            new Town { Name = "Ballyshannon", County = "Donegal", Country="Ireland", Population = 2504 },
            new Town { Name = "Buxton", County = "Derbyshire", Country="United Kingdom", Population = 13599 },
        };

        var sut = new MyClass(dependency.Object);

        // Act
        sut.DoSomething(towns);

        // Assert
        // The …
Run Code Online (Sandbox Code Playgroud)

c# generics moq type-parameter

8
推荐指数
2
解决办法
2525
查看次数

查看TortoiseHg中的拓扑头

hg heads -t在开始新工作之前,我想检查一些可能需要合并的优秀拓扑头().我没有看到使用revsets在TortoiseHg中做到这一点的方法.我不经常过滤成为一个转换的poweruser,他们吓到我了.

可能吗?

mercurial tortoisehg

7
推荐指数
1
解决办法
1047
查看次数

NLog自动截断消息

我正在将消息记录到最大为1000个字符的数据库字段中.目前,如果我尝试记录一条消息(通常包含堆栈跟踪,HTTP请求内容等异常信息),大于1000个字符,插入失败,NLog(应该)默默地忽略它并继续前进.

我可以在NLog.config中添加一些东西来声明消息长度应该总是被截断,所以它不超过1000个字符吗?

如果你能告诉我如何通过用"[...截断]"之类的东西替换1000个字符限制之前的最后几个字符来优雅地标记截断的消息,则可以获得奖励积分.

不敢相信我用谷歌搜索不能轻易找到这个.希望我不必编写自己的渲染器?

c# nlog

7
推荐指数
3
解决办法
2078
查看次数

如何使用moq模拟System.Xml.XmlWriter.WriteAttributeString()?

当我在测试中运行以下代码时,

Mock<XmlWriter> mockXmlWriter = new Mock<System.Xml.XmlWriter>();
Language language = Language.GetLangauge(langId);
language.WriteXml(mockXmlWriter.Object);
mockXmlWriter.Verify(writer => writer.WriteAttributeString("ID", language.LanguageID.ToString()));
Run Code Online (Sandbox Code Playgroud)

Moq可以理解地抛出以下异常:System.NotSupportedException : Invalid verify on a non-virtual (overridable in VB) member: writer => writer.WriteAttributeString("ID", .language.LanguageID.ToString()).

愚蠢的抽象XmlWriter仍然有一些非抽象的非虚拟方法,如WriteAttributeString():(

我寻找一个XmlWriterBase或一个System.Xml.Abstractions,就像我HttpContext和公司一样,但没有发现任何东西:(

我如何克服这一点,以便我可以测试我的WriteXml方法正在做它应该做的事情?

c# nunit xmlwriter moq mocking

6
推荐指数
1
解决办法
1051
查看次数

IIS 希望开发人员在哪里放置额外的网站?

在全新安装带有 IIS 7 的 Windows Server 2008 R2 时,它会在C:\inetpub\wwwroot. 我确信对于存储网站文件的好地方有很多主观意见,但我想知道除了默认网站之外,如果我要创建第二个网站,IIS 开发人员打算将其放在哪里?

我在想C:\inetpub\mysecondsite,但我不能肯定地说。

iis iis-7 windows-server-2008-r2 web

5
推荐指数
1
解决办法
2658
查看次数

在多个非PK字段上的流畅NHibernate映射

我的情况类似于Fluent NHibernate Mapping中描述的情况,而不是PK Field

但是,我的表之间的关系由多个非主键列描述.想象一下克里斯·米克的情况,但是Person有一个JobType和一个Code一起应该(对不起,它是一个遗留数据库)唯一描述一个Person

Person
------
Id PK
JobType
Code
Name

Order
-----
Id PK
Person_JobType
Person_Code
OrderDetails
Run Code Online (Sandbox Code Playgroud)

SerhatÖzgel的回答描述了使用PropertyRef,但我无法找到一种方法来单独为多列做到这一点.我尝试过类似的

class PersonMap : ClassMap<Person>
{
    public PersonMap()
    {
        HasMany(p => p.Order)
            .KeyColumns.Add("Person_JobType")
            .PropertyRef("JobType")
            .KeyColumns.Add("Person_Code")
            .PropertyRef("Code")
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这显然是行不通的,因为KeyColumns.Add()返回另一个OneToManyPart所以PropertyRef()添加未对个人柱.第二个PropertyRef()只是覆盖第一个,我得到以下错误:

NHibernate.MappingException : collection foreign key mapping
has wrong number of columns: MyApp.Person.Order type: Int32
Run Code Online (Sandbox Code Playgroud)

我查看了KeyColumns.Add()的各种重载,

public TParent Add(string …
Run Code Online (Sandbox Code Playgroud)

nhibernate fluent-nhibernate

5
推荐指数
1
解决办法
2846
查看次数

将包含复杂类型数组的复杂类型传递给Web API

这个问题延伸,我试图将包含复杂对象集合的复杂对象传递给ASP.NET Web API控制器操作方法,但是我无法找到用于输入对象的正确格式.请求.继续克里斯托弗约翰逊的问题的例子(并删除一些字段为简单),如果我改变他的PhoneRequest对象包含一组电话号码...

public class PhoneRequest
{
    public string[] PhoneNumbers { get; set; }
    public string State { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

...我将参数作为URL编码的查询字符串传递:

/api/phonenumber?id[0][State]=UT&id[0][PhoneNumbers][0]=555-1234567
Run Code Online (Sandbox Code Playgroud)

...或者POST它作为html表单编码(Content-Type: application/x-www-form-urlencoded)请求正文:

[0][State]=UT&[0][PhoneNumbers][0]=555-1234567
Run Code Online (Sandbox Code Playgroud)

......然后一切都很好.但是,如果我PhoneNumbers从一个字符串集合更改为一个新PhoneNumber类型的集合...

public class PhoneRequest
{
    public PhoneNumber[] PhoneNumbers { get; set; }
    public string State { get; set; }
}
public class PhoneNumber
{
    string AreaCode { get; set; }
    string Number { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

......鉴于之前的结果,我在我看来是合乎逻辑的方式传递物体......

id[0][State]=UT&id[0][PhoneNumbers][0][AreaCode]=555&id[0][PhoneNumbers][0][Number]=1234567
Run Code Online (Sandbox Code Playgroud)

...或者再次作为一个html形式的帖子...

[0][State]=UT&[0][PhoneNumbers][0][AreaCode]=555&[0][PhoneNumbers][0][Number]=1234567 …
Run Code Online (Sandbox Code Playgroud)

c# forms content-type asp.net-web-api

4
推荐指数
1
解决办法
6981
查看次数