小编Jam*_*nes的帖子

版权日期是否需要更新?

我偶尔会看到一个拥有旧版权日期的网站.在我看来,我总是想"看看那个忘记更新版权年份的傻瓜!" 然后,当我将版权年度硬编码到我正在设计的网站时,它突然让我感到震惊:

我怎么会记得更新这个?

我的直接反应是使用一些服务器端编码来自动显示当前年份.巴姆,修好了.

后来,我开始思考自己,如果像谷歌这样大而聪明的人可以忽视这一点,那么这样做可能有些不对劲.也许我做错了什么?我想我真正想知道的是为什么我不得不让版权年保持最新状态.是有原因,还是我的慢性强迫症?

如果有充分的理由让它们保持最新,为什么没有更多的开发人员使用服务器端代码?我看到这些"错误" 地方.

server-side copyright-display

250
推荐指数
6
解决办法
11万
查看次数

用户要求非规范化数据库

我处于开发数据库驱动系统的早期阶段,系统的最大部分围绕着继承类型的关系.有一个包含大约10列的父实体,并且将有大约10个从父级继承的子实体.每个子实体将有大约10列.我认为为父实体提供自己的表并为每个子项提供自己的表 - 每个子类的表结构是有意义的.

今天,我的用户要求查看我创建的系统的结构.他们对每子类表结构的想法犹豫不决.他们更喜欢一个大~100列表,因为它们更容易执行自己的自定义查询.

为了用户的缘故,我应该考虑对数据库进行非规范化吗?

database database-design denormalization database-normalization

15
推荐指数
4
解决办法
992
查看次数

Windows Azure和传统Windows主机有什么区别?

我对Windows Azure的了解仅限于我在微软网站上观看的几个视频.除了一些新的流行语,我还没有看到这个平台如何与已存在多年的传统网络主机区分开来.除了独特的计费模式(例如"每月存储交易")之外,Azure 在实际服务方面与传统网络主机(例如discountasp.net)有何区别?

cloud web-hosting azure

12
推荐指数
1
解决办法
1万
查看次数

使用可选参数的接口实现

拿这个界面:

interface ILogger
{
    void Store(string payload);
}
Run Code Online (Sandbox Code Playgroud)

而这个类的实现ILogger:

class Logger : ILogger
{
    void Store(string payload, bool swallowException = true)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望编译器能够识别swallowException为可选参数,从而满足接口的要求.相反,会发生什么是编译器抱怨Logger不实现接口成员Store.

我尝试的另一个有趣的事情是明确地实现接口,如下所示:

class Logger : ILogger
{
    void ILogger.Store(string payload, bool swallowException = true)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器发出警告"为参数'swallowException指定的默认值'将不起作用,因为它适用于在不允许可选参数的上下文中使用的成员." 它似乎暗示可选参数在某种程度上与显式接口定义不兼容,但为什么呢?

我可以通过Store使用两个单独的函数定义(在存在可选参数之前执行操作的方式)重载来解决此问题.但是我喜欢它们语法清晰度的可选参数,并且希望这只是按照我期望的方式工作.

我知道可能有一个合理的(历史的或其他的)解释为什么会这样,但我似乎无法弄明白.

.net c# c#-5.0 .net-4.5

12
推荐指数
1
解决办法
4319
查看次数

C#空语句

C#语言规范定义了空语句文法生产,这让我做这样的事情:

static void Main(string[] args)
{
    ; ; ;
}
Run Code Online (Sandbox Code Playgroud)

为什么Microsoft会在C#语言中包含这种语法生成?它有用吗?

c# compiler-construction programming-languages

10
推荐指数
4
解决办法
3365
查看次数

C#中引用类型的值赋值

按引用类型的值实现赋值的正确方法是什么?我想执行一项任务,但不更改参考.

这就是我在说的:

void Main()
{
    A a1 = new A(1);
    A a2 = new A(2);
    a1 = a2; //WRONG: Changes reference
    a1.ValueAssign(a2); //This works, but is it the best way?
}

class A
{
    int i;

    public A(int i)
    {
        this.i = i;
    }

    public void ValueAssign(A a)
    {
        this.i = a.i;
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该使用某种惯例吗?我觉得我不是第一个遇到这种情况的人.谢谢.

编辑:

哇.我想我需要针对我面临的实际问题更多地调整我的问题.我得到了很多答案,不符合不改变参考的要求.克隆不是问题所在.问题在于分配克隆.

我有许多依赖于A的类 - 它们都共享对A类相同对象的引用.因此,每当一个类改变A时,它就反映在其他类中,对吧?这一切都很好,直到其中一个类试图这样做:

myA = new A();
Run Code Online (Sandbox Code Playgroud)

实际上我不是在做,new A()但我实际上正在从硬盘驱动器中检索A的序列化版本.但无论如何,这样做会导致myA收到新的参考.它不再与依赖于A的其他类共享相同的A.这是我试图解决的问题.我希望所有具有A实例的类都受上面代码行的影响.

我希望这能澄清我的问题.谢谢.

.net c#

9
推荐指数
2
解决办法
1万
查看次数

打印WPF BitmapImage

打印BitmapImage的最佳方法是什么?我来自System.Drawing的背景,所以我正在考虑将其转换为Bitmap然后打印它,但我认为可能有更好的方法.

谢谢!

.net printing wpf imaging

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

如何在ASP.NET Web应用程序(而不是MVC)中使用Razor语法

如何在ASP.NET Web应用程序中创建.cshtml页面?使用MVC时,选择Razor的选项很明显 - 添加视图时会出现.但我似乎无法弄清楚如何在一个普通的ASP.NET Web应用程序中实现这一点.它甚至可能吗?

asp.net razor

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

生成代码的价值是否如此灵活,以至于永远不需要更新?

我目前正与我的同事讨论如何设计一个将由我的部门使用的API.具体来说,我的任务是编写一个API,作为访问Active Directory信息的包装 外观 - 根据我公司/部门的需求量身定制.我知道开源封装 外墙已经存在,但这不是这个问题的症结所在,仅仅是用来作为一个例子.

当我向我的团队提交我的设计方案时,他们让我失望,因为API不够"可配置".他们声称他们不希望API在"电话号码"和<隐藏电话号码的Active Directory表示>之间建立链接.会议中的每个人(除了我)都同意他们更愿意四处询问"Active Directory中用于用户电话号码的正确字段是什么?",并将其插入各自的应用程序(LOL!).

他们问我,"如果我们公司决定使用不同的字段的电话号码,你不在身边尽在改变你的源代码吗?" 他们最终承认他们害怕改变其他人的源代码,即使代码是原始的并且进行了大量的单元测试.我所在部门的每个高级IT人员都同意这一点.

在设计软件时,这真的是正确的态度吗?!

active-directory

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

让我的clickonce应用程序部分信任值得吗?

我即将开始研究针对内部客户的ClickOnce应用程序,以便在组织的Intranet上使用.我想简化设置过程,所以我认为开发部分信任的应用程序是个好主意,但现在我不太确定.

用户特别要求的一件事是(归结为)a TextBox与Cue Text.目前提供此功能的最简单方法是使用一个简单的子类,TextBox其中包含CueText功能作为属性.cuetext功能是通过PInvoke'd调用完成的SendMessage().

protected override void OnHandleCreated(EventArgs e)
{
    this.UpdateCueText();  // Bang, you're dead here
    base.OnHandleCreated(e);
}

private void UpdateCueText()
{
    if (this.IsHandleCreated)
    {
        NativeMethods.SendMessage(new HandleRef(this, this.Handle), setCueBannerMessage, this.showCueTextWithFocus ? new IntPtr(1) : IntPtr.Zero, this.cueText);
    }
}
Run Code Online (Sandbox Code Playgroud)

"啊哈!我需要SecurityPermission.UnmanagedCode." 默认的Intranet区域安全性包括SecurityPermission我可以告诉的权限,所以我尝试运行它,它会在调用时爆炸UpdateCueText().我甚至可以检查SecurityExceptionb/c 上的属性,每次尝试评估一个SecurityException属性都会引发另一个无法察觉的属性SecurityException.

我尝试标准修改:

protected override void OnHandleCreated(EventArgs e)
{
    var permission = new SecurityPermission(SecurityPermissionFlag.UnmanagedCode);
    permission.Assert();
    try
    {
        this.UpdateCue();
    }
    finally
    {
        CodeAccessPermission.RevertAssert();
    }
    base.OnHandleCreated(e); …
Run Code Online (Sandbox Code Playgroud)

c# clickonce pinvoke code-access-security

2
推荐指数
1
解决办法
881
查看次数