小编Adr*_*ips的帖子

C#有扩展属性吗?

C#有扩展属性吗?

例如,我可以添加一个扩展属性来DateTimeFormatInfo调用ShortDateLongTimeFormat哪个会返回ShortDatePattern + " " + LongTimePattern

c# extension-methods properties

712
推荐指数
5
解决办法
19万
查看次数

实体框架术语中"模型"和"上下文"之间有什么区别?

实体框架术语中"模型"和"上下文"之间有什么区别?

我在应用程序中使用Entity Framework数据库第一种方法.这些术语出现了很多次,因为我一直在阅读关于EF实施策略的不同论坛和文章.我似乎无法弄清楚这两者是如何不同的(甚至不仅仅是实体框架,而是一般的软件开发).人们使用这些词语就好像它们不同,但是有些人似乎可以互换地使用这些词语.

c# entity-framework

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

迭代枚举值是否有任何众所周知的范例?

我有一些C++代码,其中声明了以下枚举:

enum Some 
{
   Some_Alpha = 0,
   Some_Beta,
   Some_Gamma,
   Some_Total
};
int array[Some_Total];
Run Code Online (Sandbox Code Playgroud)

Alpha,Beta和Gamma的值是顺序的,我很乐意使用以下循环来迭代它们:

for ( int someNo = (int)Some_Alpha; someNo < (int)Some_Total; ++someNo ) {}
Run Code Online (Sandbox Code Playgroud)

这个循环没问题,直到我决定改变枚举中声明的顺序,比如说,使Beta成为第一个值,而Alpha - 第二个.这使循环标头无效,因为现在我必须从Beta迭代到Total.那么,迭代枚举的最佳实践是什么?我希望迭代所有值,而不是每次都更改循环标题.我能想到一个解决方案:

enum Some 
{
   Some_Start = -1,
   Some_Alpha,
   ...
   Some_Total
};
int array[Some_Total];
Run Code Online (Sandbox Code Playgroud)

并从(Start + 1)迭代到Total,但它看起来很难看,我从未见过有人在代码中这样做.是否有任何众所周知的范例来迭代枚举,或者我只需要修复枚举值的顺序?(让我们假装,我真的有一些很棒的理由来改变枚举值的顺序)......

c++ iteration enums

12
推荐指数
3
解决办法
7835
查看次数

在C#中验证文件夹名称

我需要在c#中验证文件夹名称.

我试过以下正则表达式:

 ^(.*?/|.*?\\)?([^\./|^\.\\]+)(?:\.([^\\]*)|)$
Run Code Online (Sandbox Code Playgroud)

但它失败了,我也尝试过使用GetInvalidPathChars().

当我尝试使用P:\abc文件夹名称时失败,即Driveletter:\foldername

谁有人建议为什么?

c# regex

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

PHP:如何从String中删除最后一个单词?

如何用PHP删除字符串中的最后一个单词?

例如,字符串"Hi, I'm Gian Marco"将成为"Hi, I'm Gian".

php string replace

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

如何检查String中是否包含全角字符

任何人都可以建议我如何检查是否String包含全角字符Java?全角的字符是特殊字符.

字符串中的全角字符:

?????????.???

字符串中的半角字符:

abc@gmail.com

java string character special-characters

6
推荐指数
2
解决办法
4107
查看次数

通过电子邮件地址查找用户

我正在尝试查找我的Azure AD B2C目录中是否已经使用了电子邮件地址.

var token = await this.GetTokenAsync();

var client = new HttpClient();

var id = HttpUtility.UrlEncode("adrian_mydomain.com#EXT#@xxxxxxxxx.onmicrosoft.com");
////var id = HttpUtility.UrlEncode("adrian@mydomain.com"); // This also fails.
////var id = HttpUtility.UrlEncode("adrian_mydomain.com#EXT#"); // This also fails.
////var id = "xxxx-xxxx-xxxxxxxx-xxxxxxxxxx"; // This also fails (user object id).

var resource = $"{this.graphConfig.GraphUri}/{this.graphConfig.Tenant}/users/{id}?api-version=1.6";
//// This line below works, it returns all the users, so I do know the token is good and the resource URI is valid, etc.
////var resource = $"{this.graphConfig.GraphUri}/{this.graphConfig.Tenant}/users?api-version=1.6";

var request = …
Run Code Online (Sandbox Code Playgroud)

azure azure-ad-graph-api azure-ad-b2c

6
推荐指数
3
解决办法
5714
查看次数

身份验证和用户任务

我正在考虑开发一个具有明确定义域的系统(主要是基于 Web 的)。

域的配件包括实体,如DiaryBookingCustomer,等。

但是,我创建了另一个名为User的实体,其意图仅用于身份验证和授权(Customer用特定于身份验证的数据污染实体似乎是错误的)。我认为这不是“预订”领域的一部分,但具体来说这应该属于应用层(我正在试用六边形架构)。

我正在使用域模型中的接口访问我的存储库,并使用 IoC 将它们连接到我的持久层。

我的问题是这样的:

  • 我应该将身份验证/授权代码放在应用程序中并将其保留在域之外吗?

  • 如果我确实将它排除在域之外,我是否也应该将 的接口 UserRepository也放在应用程序层中(我认为这是有道理的)?

  • 如果我确实将它排除在域之外,我最终也会在应用程序层中使用称为User等的实体。这似乎是错误的。

人们的想法是什么?

[编辑]

我已经找到了一个从两个答案中都需要一点的解决方案,所以感谢您的回答,我已经对你们两个都+1了。

我所做的是将身份验证/授权代码放在一个子域(辅助适配器)中,在一个单独的项目中,并且因为它需要访问它自己的持久性(一个单独的 RavenDB 数据库中的一些集合),我包括这些直接进入单独的项目,使它们与主持久层分开。

domain-driven-design

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

将 Uri 返回到本地主机

在开发过程中,团队更喜欢针对本地数据库和本地 IIS Express Web 服务器进行开发。

我们尝试在 Azure AD B2C 应用程序配置中将http://localhost:<port>/的地址配置为返回 URI,但这是不允许的(从技术上讲它应该可以工作,尽管我明白为什么它不是允许)。所以目前,当有人登录时,它会将他们返回到测试服务器 URL。

我们希望返回到我们的本地开发服务器实例。人们知道有什么方法可以实现这一目标吗?

azure-ad-b2c

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

基于声明的表单身份验证角色

我正在尝试使用MVC 4中的表单身份验证对用户进行身份验证(我正在使用RavenDB,因此我无法使用标准成员资格提供程序).然后我会使用该User.IsInRole()方法或AuthorizeAttribute验证用户是否担任员工角色.

这是我在成功验证时设置票证的地方(目前在UserController.cs):

FormsAuthenticationTicket ticket =
    new FormsAuthenticationTicket(
        1,
        model.Email,
        DateTime.Now,
        DateTime.Now.AddDays(1),
        false,
        model.Email);

string hashedTicket = FormsAuthentication.Encrypt(ticket);

HttpCookie cookie =
    new HttpCookie(
        FormsAuthentication.FormsCookieName,
        hashedTicket);

HttpContext.Response.Cookies.Add(cookie);
Run Code Online (Sandbox Code Playgroud)

这是我检查每个请求(Global.asax)的票证的地方:

protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
    var authCookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];

    if (authCookie != null)
    {
        var authTicket = FormsAuthentication.Decrypt(authCookie.Value);
        var user = this.UserService.GetUserByEmail(authTicket.Name);

        var identity = new GenericIdentity(authTicket.Name, "Forms");

        var principal = new GenericPrincipal(identity, user.Roles);

        HttpContext.Current.User = principal;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我然后在我的一个动作方法(CalendarController.cs)上放置一个调试点,我得到isStaff等于false …

c# asp.net-mvc-3 asp.net-mvc-4

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