小编Ces*_*Gon的帖子

.NET桌面应用程序中的Settings.settings与app.config

可能重复:
app.config文件和XYZ.settings文件有什么区别?

我很惊讶Visual Studio中这两种机制的明显冗余来存储和管理桌面应用程序设置:

  • 您可以使用XML app.config文件,向该<appSettings>部分添加项目.可以使用ConfigurationManager类从代码中检索这些内容.
  • 或者,您可以使用Settings.settings文件通过编辑器添加单个设置.Visual Studio将生成一个Settings类,用于在运行时对类型安全的设置检索.

这两种机制似乎服务于相同(或几乎相同)的目的.我知道存在一些差异,但我也对重叠及其后果感到困惑.例如,当我使用Visual Studio向Settings.settings文件添加设置时,我输入的所有信息也最终作为app.config文件中的条目.显然,存在同步机制:如果我更改了app.config文件中的设置,Visual Studio会在Settings.settings下次在编辑器中打开时提示我更新文件.

我的问题是:

  • 为什么两种机制而不仅仅是一种?
  • 使用app.configover 的最常见方案是什么Settings.settings,反之亦然?
  • 如果我的应用程序正在使用Settings.settings并且在app.config部署后更改了值,会发生什么?Settings.settings由于已经编译和分发,因此不会发生同步.

注意.我已经搜索了关于这个主题的问题,但我更加困惑.例如,这里这个问题的答案是相当矛盾的,并没有说清楚.

注意2.我知道这app.config是一个设计时文件名,我熟悉Visual Studio复制的动态并将其重命名为可执行文件夹.

.net app-config settings.settings

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

在C#中将内容转换为枚举

在C#中有一些我无法理解的东西.您可以将超出范围int转换为a enum,编译器不会退缩.想象一下enum:

enum Colour
{
    Red = 1,
    Green = 2,
    Blue = 3
}
Run Code Online (Sandbox Code Playgroud)

现在,如果你写:

Colour eco;
eco = (Colour)17;
Run Code Online (Sandbox Code Playgroud)

编译器认为没问题.还有运行时.呃?

为什么C#团队决定实现这一目标?我认为,在这样的场景中,这个决定忽略了使用枚举的重点:

void DoSomethingWithColour(Colour eco)
{
    //do something to eco.
}
Run Code Online (Sandbox Code Playgroud)

在像C#这样的强类型语言中,我想假设它eco总是具有合法Colour价值.但这种情况并非如此.程序员可以调用我的方法,其值为17 eco(如前面的代码片段所示),因此我的方法中的代码不能假定它eco具有合法Colour值.我需要明确地测试它并按照我的要求处理特殊值.为什么是这样?

在我的拙见中,如果编译器在将超出范围int转换为a时发出错误(甚至是警告)消息enum,如果int在编译时已知该值,则会更好.如果没有,运行时应该在赋值语句中抛出异常.

你怎么看?这有什么原因吗?

(注意:这是我在很久以前在我的博客上发布的一个问题,但没有得到任何信息回复.)

c# enums casting

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

在.NET中查找总磁盘空间和可用磁盘空间

我试图找到一种方法来确定.NET应用程序中任意文件夹中的总磁盘空间和可用磁盘空间.通过文件夹中的"总磁盘空间"和"可用磁盘空间",我指的是如果对其执行"dir"命令,则该文件夹将报告的总磁盘空间和可用磁盘空间,即,总磁盘空间和可用磁盘空间.考虑到发出请求的用户帐户,包含该文件夹的逻辑驱动器.

我正在使用C#.该方法应该对作为UNC路径给出的本地和远程文件夹起作用(而不是通过映射的驱动器号访问).例如,它应该适用于:

  • C:\ TEMP
  • \\ Silfen \资源\ TEMP2

我开始使用DirectoryInfo对象,但这似乎没有关联的磁盘空间信息.DriveInfo类可以,但它不能用于远程文件夹.

编辑.在与你们进行一些交流后,我正在考虑将远程文件夹映射为本地驱动器,使用DriveInfo获取数据,然后再取消映射.这种方法的问题是我的应用程序需要每天几次收集120多个文件夹的数据.我不确定这是否可行.

有任何想法吗?谢谢.

.net directory diskspace

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

SQL Server 2008中的递归同表查询

我在SQL Server 2008数据库中有以下表:

Id  Name       ParentFolder
--  ----       ------------
1   Europe     NULL
2   Asia       NULL
3   Germany    1
4   UK         1
5   China      2
6   India      2
7   Scotland   4
Run Code Online (Sandbox Code Playgroud)

ParentFolder是同一个表中的FK到Id.我想创建一个结果如下的视图:

Id  Name       FullName
--  ----       --------
1   Europe     Europe
2   Asia       Asia
3   Germany    Europe/Germany
4   UK         Europe/UK
5   China      Asia/China
6   India      Asia/India
7   Scotland   Europe/UK/Scotland
Run Code Online (Sandbox Code Playgroud)

如您所见,我需要通过递归使用ParentFolder关系构建FullName值,直到找到NULL为止.

编辑.表中的每一行"知道"其他行是否为其父级,但不知道其在层次结构中的绝对位置.出于这个原因,每个行在层次结构树中存储其绝对位置的沿袭系统是不合适的.

我知道SQL Server 2008的hierarchyid功能,但据我所知,它只适用于固定数量的递归级别.然而,在我的情况下,你永远不会知道你会找到多少级别,并且它们可能会在行之间发生变化.

我也在这里发现了类似的问题.但是,我认为没有人问过为表格中的每一行构建"路径".对不起,如果我错过了.

非常感谢.

recursion sql-server-2008

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

如何使用WCF将派生类型序列化为其基类型

我有一个包含一些对象的公共库.然后我有一个引用公共库的服务项目,并从公共库中的对象创建一些派生类型.

我希望我的服务将派生类型序列化为公共库中定义的基类型.

我不能在公共库中的对象上使用KnownTypes,因为我不希望公共库引用服务程序集.

那么如何将wcf序列化派生类型作为其基类型?

我希望我能做点像......

[DataContract(SerializeAsType = typeof(BaseType))] public class DerivedType:BaseType {}

有可能这样吗?

wcf serialization datacontract datacontractserializer

12
推荐指数
2
解决办法
6693
查看次数

语言真的依赖于图书馆吗?

我一直想知道如何从编程语言到其库来管理依赖项.以C#为例.当我开始学习计算时,我会假设(错误地证明)语言本身是独立于最终可用于它的类库而设计的.也就是说,首先定义语言关键字集(例如for,classthrow)加上语法和语义,并且可以从语言中使用的库是单独开发的.我曾经认为,这些库中的特定类不应该对语言的设计产生任何影响.

但这不起作用,或者不是一直都行不通.考虑throw.C#编译器确保后面的表达式throw解析为异常类型.Exception是一个库中的类,因此它根本不应该是特殊的.除了C#编译器为其指定特殊语义之外,它将与其他任何类一样.这是非常好的,但我的结论是语言的设计确实取决于类库中特定元素的存在和行为.

另外,我想知道如何管理这种依赖.如果我要设计一种新的编程语言,我会用什么技术将语义映射throw到特定的类Exception

所以我的问题是两个:

  • 我是否认为语言设计与其基类库紧密耦合?
  • 如何在编译器和运行时内管理这些依赖项?使用了什么技术?

谢谢.

编辑.感谢那些指出我的第二个问题非常含糊的人.我同意.我想要学习的是编译器存储的所需类型的引用.例如,它是否通过某种唯一ID找到类型?发布新版本的编译器或类库时会发生什么?我知道这仍然很模糊,我不期待一个精确的单段答案; 相反,非常欢迎指向文学或博客文章.

c# dependencies programming-languages libraries

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

使用SQL Server对会计年度进行分组

SQL Server中是否有一种方法可以从具有日期列(1998到2010)的表中显示会计年度(从10月1日开始到9月30日结束).这是我做的:

select 'FY1999' as FY, site, count(*)
from mytable
where mydate >='10/1/1998' 
    and mydate <'10/1/1999'
group by site
Run Code Online (Sandbox Code Playgroud)
select 'FY2000' as FY, site, count(*)
from mytable
where mydate >='10/1/1999' 
    and mydate <'10/1/2000'
group by site
Run Code Online (Sandbox Code Playgroud)
select 'FY2001' as FY, site, count(*)
from mytable
where mydate >='10/1/2000' 
    and mydate <'10/1/2001'
group by site
Run Code Online (Sandbox Code Playgroud)

这个年度超过10年这样做是不是太重复了?

sql sql-server

7
推荐指数
2
解决办法
6880
查看次数

数据封装......?

有人能够向我解释一下Objective-C中的数据封装是什么吗?我被告知这是Objective-C的一个重要概念,但我不明白为什么......

向我解释好像我是5岁,然后好像我25岁......

谢谢你的时间,〜丹尼尔

encapsulation objective-c

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

用于.NET的模糊日期/时间管理库

我正在寻找一个可以存储和管理模糊(即不确定)日期/时间的.NET库,也就是说,时间表达式不遵循通常的日,月,年,小时,分钟,秒的精确模式.我需要能够处理表达的日期/时间值的东西,例如:

  • 1985年第二季度
  • 20世纪30年代初
  • 十七世纪的第二个三分之一

该库可能实现FuzzyDateTime类型或类似的东西,并允许多种方式从文本和/或常规DateTime值构造它的实例.还需要比较和排序功能.

所以,我的问题是:你知道任何适合这种描述的产品吗?我很高兴考虑各种产品,即商业,开源,免费软件等.

有任何想法吗?非常感谢.

.net time date fuzzy

7
推荐指数
2
解决办法
690
查看次数

将ASP.NET应用程序本地化为普通话

我们开发了一个中型ASP.NET/SQL Server应用程序,它使用资源文件来提供英语和西班牙语用户界面变体.整个数据库使用Unicode数据类型.现在我们被要求添加普通话.我没有对亚洲语言进行本地化的经验,所以我真的无法想象这会是什么样的工作.

我的问题是:

  1. 与将其他西方语言(如法语或德语)本地化相比,这项工作有多复杂?
  2. 还有哪些其他问题,除了(显然)翻译资源文件中的字符串,我应该处理普通话本地化吗?或许与不同字母相关的任何事情?

有关以往经验或最佳实践指南的报告是最受欢迎的.谢谢.

asp.net localization

7
推荐指数
2
解决办法
1270
查看次数