小编Mou*_*Lin的帖子

过时的属性不会在VS2010中引起任何编译器警告

我正在使用Visual Studio 2010.但是发现Obsolete属性不会导致任何编译器警告(我希望它导致编译器警告).警告级别为4.

谢谢.

c# visual-studio-2010 obsolete

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

ASP.NET HttpContext.GetLocalResourceObject()抛出InvalidOperationException

假设我们有这样的网站结构:

App_LocalResources
      | - A.aspx.resx
      | - B.aspx.resx
A.aspx
B.aspx

现在我在A.aspx.cs中使用HttpContext.GetLocalResourceObject("〜/ A.aspx","Key1"),它工作正常.但是如果我在B.aspx.cs中使用HttpContext.GetLocalResourceObject("〜/ A.aspx","Key1"),它会引发异常:

找不到此页面的资源类.请检查资源文件是否存在,然后重试.

异常详细信息:System.InvalidOperationException:找不到此页面的资源类.请检查资源文件是否存在,然后重试.

我该如何解决这个问题?我想从外部页面读取本地资源,我不想自己读取.resx文件.谢谢 :-)

更新:在我的情况下,有一些"data.xml"文件(它们在不同的目录中,并且具有类似的元素<key name='Key1' value='value1' />),并且它们的内容将呈现为html.

但是data.xml中的键名应该在呈现之前进行本地化(不同的data.xml包含不同的键).

例如,data.xml具有以下元素:

<key name='CategoryId' value='3' />
Run Code Online (Sandbox Code Playgroud)

在结果html页面中,我想为en-US文化显示"Category Id = 3",为zh-CN文化显示"类别= 3"等.

所以我想我可以data.xml.??-??.resxApp_LocalResources文件夹中的模式" " 之后创建一些文件,然后使用HttpContext.GetLocalResource()for each data.xml来检索本地化的密钥名称.这样我就不需要自己阅读xml了.可能吗?

asp.net resources resx

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

NHibernate一对多映射:插入子项问题

这是我的代码:

Order order = new Order { ... };
OrderItem item = new OrderItem { ... };
order.Items.Add(item);
item.Order = order;

using(var tran = session.BeginTransaction()) {
    session.Save(order);
    // Without this, an exception will be thrown: Unexpected row count: 0; expected: 1
    // session.Save(item);

    tran.Commit();
}
Run Code Online (Sandbox Code Playgroud)

如果我取消注释该行session.Save(item),它将插入订单及其项目.否则,它抛出异常"意外的行数:0;预期:1".

如果我将many end(Items属性)标记为inverse ="true",则不会抛出任何异常,但它只插入Order!订单商品不会插入数据库.

如果我打电话session.Save(item)没有打电话session.Save(order),它会插入订单和它的项目.

如何在不打电话session.Save(orderItem)但只打电话的情况下保存订单及​​其订单商品session.Save(order)?谢谢!

这是我的映射:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Core" assembly="Core">
  <class name="Order" table="[Order]">
    <id name="Id">
      <generator class="assigned" />
    </id>

    <property name="Name" />
    <bag name="Items"> …
Run Code Online (Sandbox Code Playgroud)

.net c# nhibernate one-to-many

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

我是否需要为抽象类提供一个空的受保护构造函数?

我知道抽象类中的构造函数应该用C#保护.

但是一些抽象类不需要非参数构造函数.例如:

public abstract MyAbstractClass {
    public abstract Method1();
    public abstract Method2();
    // non-parameterless constructors are not needed
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,在上面的类中,我是否需要提供一个空的受保护构造函数来覆盖默认的隐式构造函数?那是:

public abstract MyAbstractClass {
    protected MyAbstractClass() { }

    public abstract Method1();
    public abstract Method2();
}
Run Code Online (Sandbox Code Playgroud)

如果我不提供这个空的受保护构造函数,那么会有一个隐式的默认构造函数,它是公共的(正确吗?).这打破了"抽象类中的构造函数不应该公开"的规则.

但是当我检查ASP.NET MVC框架的源代码时,我发现它们没有为抽象类提供空的受保护构造函数.所以,也许设计规则应该是:

如果在抽象类中定义构造函数,则它们不应该是公共的.

如果在抽象类中不需要非参数构造函数,则不要定义它们.

有什么想法吗?

.net c# abstract-class design-guidelines

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

使用一个Windows服务执行作业,使用两个Web应用程序来安排作业

我有一个SQL Server数据库作为作业存储,两个Web应用程序都可以调度作业,还有一个Quartz.NET Windows服务来执行作业.

我希望两个Web应用程序只调度作业,而Windows服务只是为了执行作业.

问题出现了:

如果我在两个Web应用程序和Windows服务中创建IScheduler实例,它们将同时执行作业,可能会发生冲突.

如果我不在两个Web应用程序中创建IScheduler实例,如何从Web应用程序调度作业到Windows服务?

有没有办法让IScheduler只安排工作而不执行工作?(我可以将IJob程序集部署到所有这三个应用程序)

windows-services quartz.net

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