小编Rza*_*sar的帖子

传递一个Type作为属性参数

我想要这样的课:

[XmlRoot(ElementName = typeof(T).Name + "List")]
public class EntityListBase<T> where T : EntityBase, new()
{
    [XmlElement(typeof(T).Name)]
    public List<T> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是typeof(T)不能是属性参数.

我该怎么做?

c# generics attributes

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

自定义ActionBlock <T>

我想实现优先顺序ActionBlock<T>.因此我可以TInput通过使用a 来有条件地优先考虑某些项目Predicate<T>.
我阅读了 Parallel Extensions Extras示例实现自定义TPL数据流块的指南.
但仍然没有弄清楚如何实现这种情况.
---------------------------- EDIT --------------------- ------
有一些任务,其中5个可以同时运行.当用户按下按钮时,一些(取决于谓词函数)任务应该以最高优先级运行.
实际上我写了这段代码

TaskScheduler taskSchedulerHighPriority;
ActionBlock<CustomObject> actionBlockLow;
ActionBlock<CustomObject> actionBlockHigh;
...
queuedTaskScheduler = new QueuedTaskScheduler(TaskScheduler.Default, 5);
taskSchedulerHigh = queuedTaskScheduler.ActivateNewQueue(0);
taskSchedulerLow = queuedTaskScheduler.ActivateNewQueue(1);
...
actionBlockHigh = new ActionBlock<CustomObject>(new Action<CustomObject>(method), new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 5, SingleProducerConstrained = false, TaskScheduler = taskSchedulerHigh });
actionBlockLow = new ActionBlock<CustomObject>(new Action<CustomObject>(method), new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 5, MaxMessagesPerTask = 1, TaskScheduler = taskSchedulerLow });
...     
if (predicate(customObject)) …
Run Code Online (Sandbox Code Playgroud)

c# multithreading task-parallel-library .net-4.5 tpl-dataflow

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

使用string.format()函数或LINQ分隔字符串的最佳方法是什么?

有没有办法使用函数或LINQ 更改" ABCDEFGHIJKLMNOP"到" ABCD-EFGH-IJKL-MNOP" string.format()
我正在使用这个声明

Out= String.Format("{0}-{1}", String.Format("{0}-{1}-{2}", In.Substring(0, 4), In.Substring(4, 4), In.Substring(8, 4)), In.Substring(12, 4));  
Run Code Online (Sandbox Code Playgroud)

有没有更好更清晰的方法来实现这一目标?

c# linq string

5
推荐指数
2
解决办法
178
查看次数

当应用程序是其自身唯一的令牌提供者时,验证 JWT 中的发行者和受众的重要性

听起来像是愚蠢的问题,但我无法从许多文章中找到/推断以下问题的答案。

  1. 谁是Issuer?(可能是我们信任的令牌提供商。例如“Google、Faceboock 等”,我们的网站接受来自主题的令牌)。
  2. 谁是Audience
  3. 如果我不使用OAuthand ,我应该验证这两个吗OpenID?我的意思是,它们仅用于第三方身份验证/授权(因为我的网站是我自己的令牌的唯一发行者)?
  4. 当我的网站不使用第三方进行身份验证和授权时,如果我不验证这两者,我应该承担什么风险?

openid oauth jwt

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

使用互锁用法

我正在尝试编写一个多线程程序,其中每个线程将使用一个计数器,然后递增它.

例如:

lock(this)
{
   counter++;
   Console.WriteLine(counter); 
}
Run Code Online (Sandbox Code Playgroud)

我知道,对于增量我可以使用:

System.Threading.Interlocked.Increment(counter);
Run Code Online (Sandbox Code Playgroud)

但是如果锁定增量和对计数器做某事呢?

谢谢!

c# multithreading

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

从程序集中删除强签名

我在构建一些项目时遇到了麻烦.请考虑这种情况:

  1. 我有2个项目.例如A和B.
  2. 从A到B有一个参考
  3. B的项目是强烈签署的(我不希望它出于某些原因签名.所以我决定删除它的"签署程序集"的复选框)
  4. A项目中的AssemblyInfo.cs文件中有一行代码说:

    [assembly: InternalsVisibleTo("B,publicKey=0024......")]
    
    Run Code Online (Sandbox Code Playgroud)

    我改成了:

    [assembly: InternalsVisibleTo("B")]

    现在当我编译其中一个项目时,出现了一个错误并说:

朋友汇编参考'B'无效.强名称签名程序集必须在其InternalsVisibleTo声明中指定公钥.

我的问题在这里:编译器如何知道它有一天是签名的程序集?以及如何从B的装配中完全删除强烈签名并最终正确构建它们?

编辑:顺便请注意,这两个主题都没有强烈签名!因为我从那些项目的属性中删除了那些"签署程序集"复选框


当我将程序集的名称更改为某些错误的名称,如"bla_bla_bla"甚至不存在时,错误是一样的!
[assembly: InternalsVisibleTo("bla_bla_bla")]
我认为这个理论是正确的:
实际上B Project没有编译,如果它没有找到匹配的编译项目名称(当构建项目A时),编译器猜测B项目是用开发人员没有的公钥强烈签名的提供它!最后它会提示这种奇怪的错误!
由于B的原因引用了A,当我编译B项目时,它将首先编译它的引用(A项目)并且再次编译器将提示我该错误(与我编写项目A的时候相同)
但是它是`这不是真的,或者我的项目A有些问题.因为我从头开始两个新的简单项目,每一件事情都没有错误(即使我将[assembly:...]语句更改为无效的程序集名称)我彻底崩溃了

c# .net-4.0

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

当只有读取操作时,可以将 DbContext 作为单例注入吗?

我知道这DbContext不是线程安全的,加上DbContext缓存数据,当多个事务尝试将自己的更改保存/提交到数据库时,它可能会导致数据不一致。因此,强烈建议按请求注入它(这里)。但是我有一种情况,只有读取操作存在(在独立的类库中)并且没有事务或创建/更新/删除操作。
我的问题是:DbContext在这种情况下作为单例注入是否安全?

.net c# entity-framework ef-core-3.1

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

ng-bootstrap 的 css 文件夹不存在

我是 angular 的新手,并试图将 bootstrap 4 与 angular 结合使用。首先,我安装了 ng-bootstrap,如下所示:

npm install --save @ng-bootstrap/ng-bootstrap
Run Code Online (Sandbox Code Playgroud)

和其他一些相关的东西 app.module.ts

import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
...
NgbModule.forRoot()
Run Code Online (Sandbox Code Playgroud)

并添加一些样式.angular-cli.json(将以下代码放入styles数组)

"../node_modules/@bootstrap/dist/css/bootstrap.min.css"
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作,但风格!我意识到dist“../node_modules/@bootstrap/”地址中不存在子文件夹。
我也尝试使用构建项目ng build,但它仍然不存在。请注意,"outDir": "dist"已签入.angular-cli.json文件。
我错过了什么吗?

ng-bootstrap angular

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