小编Ste*_*idi的帖子

如何截断.NET字符串?

我想截断一个字符串,使其长度不超过给定值.我正在写一个数据库表,并希望确保我写的值符合列的数据类型的约束.

例如,如果我可以编写以下内容会很好:

string NormalizeLength(string value, int maxLength)
{
    return value.Substring(0, maxLength);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会引发异常,因为maxLength通常会超出字符串的边界value.当然,我可以编写如下的函数,但我希望这样的东西已经存在.

string NormalizeLength(string value, int maxLength)
{
    return value.Length <= maxLength ? value : value.Substring(0, maxLength);
} 
Run Code Online (Sandbox Code Playgroud)

执行此任务的难以捉摸的API在哪里?有吗?

.net c# string truncate

379
推荐指数
19
解决办法
28万
查看次数

IdentityServer4注册UserService并从asp.net核心的数据库中获取用户

我已经搜遍了如何UserService在asp.net核心中注册一个IdentityServer4,但我似乎无法找到正确的方法来做到这一点.

这是注册发现InMemoryUsers代码在这里,但是我想从样品中定义我的MSSQL数据库不是静态的用户访问的用户.

var builder = services.AddIdentityServer(options =>
{
    options.SigningCertificate = cert;
});

builder.AddInMemoryClients(Clients.Get());
builder.AddInMemoryScopes(Scopes.Get());
builder.AddInMemoryUsers(Users.Get());
Run Code Online (Sandbox Code Playgroud)

那么我看了一下是针对IdentityServer3的.

var factory = new IdentityServerServiceFactory()
                .UseInMemoryClients(Clients.Get())
                .UseInMemoryScopes(Scopes.Get());

var userService = new UserService();
factory.UserService = new Registration<IUserService>(resolver => userService);
Run Code Online (Sandbox Code Playgroud)

从在线阅读看起来我需要使用DI系统注册UserService,但我不确定它如何绑定到IdentityServer,例如.

services.AddScoped<IUserService, UserService>();
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

如何将我绑定UserService到构建器(IdentityServer4用户)?我将如何调用我的数据库来访问和验证我现有的数据库用户UserService(我使用存储库连接到数据库)?

考虑到这一点必须asp.net核心一起使用.

谢谢!

c# asp.net-core identityserver4

69
推荐指数
3
解决办法
5万
查看次数

没有访问修饰符的方法

好的,这让我烦恼..我知道我已经在某个地方读过它,谷歌没有帮助.

未指定访问修饰符的方法的可访问性级别是什么?

void Foo()
{
    //code
} 
Run Code Online (Sandbox Code Playgroud)

我想说,internal但我不是百分百肯定.

.net c# encapsulation

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

使用Visual Studio 2015,如何只提交一个文件?

我尝试过的:在VS2013中,我不记得有问题.在VS2015中,我在一个代码文件中尝试了上下文菜单,或者在解决方案资源管理器中右键单击该文件,但它包含所有已更改的文件.

我也尝试过滤,这无助于缩小签入范围.

git team-explorer visual-studio-2015

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

取消引用指针以获取引用是错误的吗?

我更喜欢在任何地方使用引用,但是当你使用STL容器时,你必须使用指针,除非你真的想按值传递复杂的类型.我觉得很难转换回参考,这似乎是错误的.

是吗?

澄清...

MyType *pObj = ...
MyType &obj = *pObj;
Run Code Online (Sandbox Code Playgroud)

这不是'脏',因为你可以(即使只是在理论上,因为你先检查它)取消引用一个NULL指针?

编辑:哦,你不知道对象是否是动态创建的.

c++ pointers stl reference

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

C#是否包含有限状态机?

我最近读过有关boost::statechart库(有限状态机)的内容,我很喜欢这个概念.

C#有类似的机制吗?或者可以使用特定的设计模式实现?

.net c# design-patterns finite-automata fsm

27
推荐指数
5
解决办法
3万
查看次数

使用XML序列化序列化没有父节点的集合

假设我有一堂课;

public class Car 
{ 
  public List<Passenger> Passengers {get; set;} 
}
Run Code Online (Sandbox Code Playgroud)

我想将其序列化为XML,以便乘客是Car的子节点,并且没有介入的Passengers节点.换句话说,我希望输出看起来像这样;

<Car>
  <Passenger>...</Passenger>
  <Passenger>...</Passenger>
</Car>
Run Code Online (Sandbox Code Playgroud)

而不是这样,这是默认布局;

<Car>   
  <Passengers>
    <Passenger>...</Passenger>
    <Passenger>...</Passenger>
  </Passengers> 
</Car>
Run Code Online (Sandbox Code Playgroud)

有一个属性我需要添加到Car.Passengers来实现这一点,我不记得哪个.

c# xml-serialization

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

设置标准流使用的内部缓冲区(pubsetbuf)

我正在编写一个需要将数据写入现有缓冲区的子程序,我想使用stringstream该类来简化数据的格式化.

最初,我使用以下代码将流的内容复制到缓冲区,但是希望避免这种解决方案,因为它复制了太多数据.

#include <sstream>
#include <algorithm>

void FillBuffer(char* buffer, unsigned int size)
{
    std::stringstream message;
    message << "Hello" << std::endl;
    message << "World!" << std::endl;

    std::string messageText(message.str());
    std::copy(messageText.begin(), messageText.end(), buffer);
}
Run Code Online (Sandbox Code Playgroud)

这是我发现streambuf::pubsetbuf()方法的时候,简单地重写上面的代码如下.

#include <sstream>

void FillBuffer(char* buffer, unsigned int size)
{
    std::stringstream message;
    message.rdbuf()->pubsetbuf(buffer, size);

    message << "Hello" << std::endl;
    message << "World!" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这在Visual Studio 2008附带的C++标准库实现下不起作用; buffer保持不变.

我看了一下它的实现,pubsetbuf结果发现它实际上"什么都不做".

virtual _Myt *__CLR_OR_THIS_CALL setbuf(_Elem *, streamsize)
{   // offer buffer to external …
Run Code Online (Sandbox Code Playgroud)

c++ stream visual-c++

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

如何向文档添加XElement,避免"结构不正确的文档"错误?

        // Remove element with ID of 1
        var userIds = from user in document.Descendants("Id")
                       where user.Value == "1"
                       select user;

        userIds.Remove();

        SaveAndDisplay(document);

        // Add element back
        var newElement = new XElement("Id", "0", 
            new XElement("Balance", "3000"));
        document.Add(newElement);

        SaveAndDisplay(document);
Run Code Online (Sandbox Code Playgroud)

add元素后块是个问题.当它到达添加时它表明:

此操作将创建结构不正确的文档.

我犯的是什么愚蠢的错误?

编辑:

是的,我是在读XDocument,而不是XElement.关于何时支持其中一个的任何建议?

.net c# xml linq-to-xml

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

需要匹配C#.cs文件名和类名吗?

在Java中,文件名必须是该java文件中定义的公共类名.C#有类似的要求吗?我可以在A.cs文件中定义一个公共B类吗?谢谢,

c# filenames classname

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