我使用Stylecop for Resharper,每当我在课堂上打电话时,Stylecop都会告诉我使用this关键字.但是IDE说这是冗余代码(确实如此),那么我为什么要使用this关键字呢?
冗余代码是否意味着它不需要(显然),编译器甚至不会对this关键字做任何事情?所以我假设这个关键字只是为了清晰起见.
此外,使用CLR,这样的事情会在各种语言中保持一致吗?因此,如果答案是编译器甚至没有触及this关键字并且它只是为了表示和清晰,那么VB.NET也是如此吗?我认为这一切都是为了清晰,因为stylecop会密切关注这一点,而Fxcop(我将在稍后使用)从技术角度关注我的代码质量.
谢谢
民间,
我有一个按名称空间划分的相当n层的ASP.NET项目,但我需要分为三个项目:数据层,中间层和前端。
我这样做是因为...
答:这似乎是正确的做法,并且
B)我在运行ASP.NET托管程序集的单元测试时遇到各种问题。
无论如何,我的问题是,您在哪里保存配置信息?
例如,现在,当实例化新的数据上下文时,我的中间层类(使用Linq到SQL)会自动从web.config中提取其连接字符串信息。
如果我的数据层在另一个项目中,可以/应该使用web.config作为配置信息吗?
如果是这样,单元测试(通常在单独的组件中)将如何提供soch配置信息?
感谢您的时间!
asp.net web-config data-access-layer 3-tier n-tier-architecture
简而言之,我正在寻找一种方法来获得更详细的输出ng test。
我不是在寻找更多的测试输出,而是在寻找有关配置的更详细的反馈。
我正在尝试配置一个项目,当某些配置不正确时,我从 CLI 得到的反馈很少。
例如,在运行时ng test,我当前得到一个托管 jasmine 的 chrome 窗口,但找到了 0 个规格,并且http://localhost:9876/ karma_webpack /main.js为404。
将 Angular 从 v14 更新到 v15 后,我看到 Angular CLI 从 src/test.ts 文件中删除了行。这些行是:
declare const require: {
context(path: string, deep?: boolean, filter?: RegExp): {
<T>(id: string): T;
keys(): string[];
};
};
Run Code Online (Sandbox Code Playgroud)
和
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().forEach(context);
Run Code Online (Sandbox Code Playgroud)
这当然导致“npm run test”命令在本地失败,因为测试文件没有明确提供给 Angular。所以我将线路添加回来,一切都开始在本地工作。CI/CD 机器无法再运行“npm run test”命令。该命令将以下内容打印到标准输出:
29 11 2022 13:00:59.161:INFO [karma-server]: Karma v6.3.20 server started at http://localhost:9876/
29 11 2022 13:00:59.167:INFO [launcher]: Launching browsers ChromeHeadlessNoSandbox with concurrency unlimited
29 …Run Code Online (Sandbox Code Playgroud) 我有一个使用Linq to SQL的asp.net应用程序.
应用程序中的一个查询超时(超过30秒执行).我增加了DataContext的CommandTimeout,它在45秒内完成.
我将Linq to SQL生成的SQL从SQL Profiler复制到SSMS,并使用我在我的应用程序中使用的相同用户凭据执行它,并且我得到了亚秒的执行时间.
我正在使用新的DataContext来执行查询,因此查询在其自己的事务中运行.
我的连接字符串如下所示:
Data Source=.\SQLEXPRESS;Initial Catalog=MyDB;Integrated Security=False; user id=MyUser; password=@#$%^&*
Run Code Online (Sandbox Code Playgroud)
任何人都有任何想法,为什么我会得到这样不同的结果?
这是SQL:
exec sp_executesql N'SELECT [t1].[MatchCount], [t1].[RequestId], [t1].[Site], [t1].[Client]
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY [t0].[RequestId]) AS [ROW_NUMBER], [t0].[MatchCount], [t0].[RequestId], [t0].[Site], [t0].[Client]
FROM [dbo].[ReportingRequestsSubsetWithMatches] AS [t0]
WHERE ([t0].[Finish] < @p0) AND ([t0].[Finish] > @p1)
) AS [t1]
WHERE [t1].[ROW_NUMBER] BETWEEN @p2 + 1 AND @p2 + @p3
ORDER BY [t1].[ROW_NUMBER]',N'@p0 datetime,@p1 datetime,@p2 int,@p3 int',@p0='2013-02-02 00:00:00',@p1='2013-02-01 00:00:00',@p2=10,@p3=10
Run Code Online (Sandbox Code Playgroud) 我的项目中有很多函数,它们以数字作为参数; 这个数字是数组索引的一半,另一半时间,它是一个光标位置(数组中两个条目之间的一个点).即使使用命名约定,这也会造成混淆.
我想强制执行以下功能正在采用预期的名义类型.
class Index extends Number {}
class CursorPosition extends Number {}
function getElement(i: Index) {}
function getRange(p1: CursorPosition, p2: CursorPosition) {}
const myIndex: Index = 6;
const myPosition: CursorPosition = 6;
getElement(1); // would like this to fail at compile time
getRange(2, 3); // would like this to fail at compile time
getElement(myPosition); // would like this to fail at compile time
getRange(myIndex, myIndex); // would like this to fail at compile time
getElement(myIndex); // would like this …Run Code Online (Sandbox Code Playgroud) 伙计们,
我在Visual Studio 2010 SP1中使用ac#,多项目解决方案时遇到问题.
下面是解决方案结构:BNLib - amy个人实用工具库WidgetClientApp - asp.net应用程序前端WidgetConsoleUtilities - 控制台应用程序WidgetCore - 包含共享接口,类和枚举WidgetMiddleTier - 业务逻辑WidgetDataLayer - 通过linq到SQL的数据库访问.
问题在向控制台应用程序(WidgetConsoleUtilities)添加对中间层程序集(WidgetMiddleTier,其中包含名称空间Widget.MT)的引用之后,我在program.cs页面中添加了一个using指令:
使用Widget.MT;
然后我在using指令上收到编译器错误:
命名空间"Widget"中不存在类型或命名空间名称"MT"(您是否缺少程序集引用?)
我在同一个解决方案中的几个其他项目中使用此程序集没有问题.我在控制台应用程序中使用另一个程序集(WidgetCore,其中包含名称空间Widget.Core).
Web应用程序(Widget)使用这两个程序集没有问题.
我已经尝试删除和读取命名空间,关闭并重新打开Visual Studio 2010,清理构建,直接包括程序集而不是项目,并且nothng已经工作.
有任何想法吗?
你的帮助将大大减少!
最好,
布雷特
我有一个包含三个表的数据库
消息 - PK = MessageId
草稿 - PK = DraftId
历史 - FK = RelatedItemId
历史表有一个外键[RelatedItemId]映射到两个主键一个Messages和Drafts。
这种关系有名字吗?
这只是糟糕的设计吗?
有没有更好的方法来设计这种关系?
以下是此问题的 CREATE TABLE 语句:
CREATE TABLE [dbo].[History](
[HistoryId] [uniqueidentifier] NOT NULL,
[RelatedItemId] [uniqueidentifier] NULL,
CONSTRAINT [PK_History] PRIMARY KEY CLUSTERED ( [HistoryId] ASC )
)
CREATE TABLE [dbo].[Messages](
[MessageId] [uniqueidentifier] NOT NULL,
CONSTRAINT [PK_Messages] PRIMARY KEY CLUSTERED ( [MessageId] ASC )
)
CREATE TABLE [dbo].[Drafts](
[DraftId] [uniqueidentifier] NOT NULL,
CONSTRAINT [PK_Drafts] PRIMARY KEY CLUSTERED ( …Run Code Online (Sandbox Code Playgroud) 我有一个多项目 Gradle 项目,在根项目中,我有以下内容:
task timeStamp {
doLast {
Date now = new Date()
println "All completed @ $now"
}
}
allprojects {
afterEvaluate {
it.getTasks().each {
println "finalize set for \"$it.name\""
if (it.name != "timeStamp") {
it.finalizedBy(':timeStamp')
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在运行时的输出中gradlew build,timeStamp 任务已运行,但它在其他一些任务之前运行。
如何在所有其他输出之后打印此时间戳?(BUILD SUCCESSFUL in ##s如果可能的话,我更喜欢它直接在输出之前)
.net ×2
angular ×2
asp.net ×2
c# ×2
3-tier ×1
angular15 ×1
casting ×1
cicd ×1
database ×1
gradle ×1
linq-to-sql ×1
namespaces ×1
performance ×1
sql ×1
sql-server ×1
ssms ×1
testing ×1
this ×1
typescript ×1
web-config ×1