快速阅读的问题:我想知道是否有其他技术我忽略了,也许p /调用某个库(无论是winapi还是第三方库).欢迎提出所有建议.
问题的完整上下文:对于给定的用例,我需要将文本文件读入内存,然后我可以操作.问题不在于操作,而在于I/O. 我目前正在使用以下C#技术:
1)"文件"的ReadAllText()方法
var content = File.ReadAllText(file.FullName);
Run Code Online (Sandbox Code Playgroud)
2)"StreamReader"的ReadToEnd()方法
var content = String.Empty;
using(var streamReader = File.OpenText(file.FullName)) {
content = streamReader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)
3)我也尝试过使用BufferedStream方法2
对于介于5到20MB之间的文件,所有文件的性能大致相同.那么,接下来的问题是:我想知道是否有其他技术我忽略了,也许p /调用某个库(无论是winapi还是第三方库).欢迎提出所有建议.
我正在使用RestSharp为Qualtrics API(v 2.5)编写C#实现.调用方法getUserIds时,它返回JSON格式的用户列表(请参阅下面的示例输出).
我面临的问题/问题是,对于每个用户对象(下面的对象列表Result),它会生成一个不同的id,从URH_.当使用json2csharp时,它假设它总是一个不同的类,而实际上它与你在输出中看到的完全相同,并且如api的文档中所述.我怎样才能最好地解决这个问题 - 这样我才能创建一个UserData可以重用的课程?因为现在我显然总是URH_在每个响应中看到这些随机前缀类.
注意:我以为我可以尝试先按下响应,当我得到响应时,用字符串替换URH_根Result对象下的每个前缀对象"UserData"- 但我觉得这有点违反规则,并认为社区会有一个更好的解决方
下面是原始JSON输出(请注意,我删除了敏感信息):
{"Meta":{"Status":"Success","Debug":""},"Result":{"URH_3wpA9pxGbE0c7Xu":{"DivisionID":null,"UserName":"user.name@domain.com","UserFirstName":"x","UserLastName":"x","UserAccountType":"UT_4SjjZmbPphZGKDq","UserEmail":"x.x@x.x","UserAccountStatus":"Active"},"URH_57vQr8MVXgpcPUo":{"DivisionID":"DV_XXXXXXXX","UserName":"jxxxx@xx.xxx","UserFirstName":"X","UserLastName":"X","UserAccountType":"UT_BRANDADMIN","UserEmail":"xxxx@xxg.xxx","UserAccountStatus":"Active"},"URH_6ujW1EP0QJOUaoI":{"DivisionID":"DV_XXXXXXXYZ","UserName":"x.xckx@xxx.xyz","UserFirstName":"x","UserLastName":"x","UserAccountType":"UT_XXXXXABCD","UserEmail":"c.c@cc.com","UserAccountStatus":"Active"}}}
Run Code Online (Sandbox Code Playgroud)
这是我使用json2csharp生成模型时得到的结果:
public class Meta
{
public string Status { get; set; }
public string Debug { get; set; }
}
public class URH3wpA9pxGbE0c7Xu
{
public object DivisionID { get; set; }
public string UserName { get; set; }
public string …Run Code Online (Sandbox Code Playgroud) 由于有很多日志框架,我希望为每个应用程序编写一个抽象,以便我控制可以插入的日志框架。这意味着我在例如 Log4Net 或 NLog 上不可靠,但是我提供了一个接口/抽象,然后在我自己的抽象中提供了插件框架。
沿着这些路线的东西(可能有点简化),我可以将其传递给任何需要依赖项的对象。
interface ILogger {
void LogMessage(string message, Severity severity);
void LogDebug(string message);
void LogInfo(string message);
void LogWarning(string message);
void LogError(string message);
void LogFatal(string message);
}
Run Code Online (Sandbox Code Playgroud)
之后我的计划是为我想要使用的日志框架编写适配器/实现 - 这样我就可以在必要时插入任何其他日志框架。
public sealed class Log4NetLogger : ILogger {
/// Implementation and Log4Net specifics here
}
public sealed class NlogLogger : ILogger {
/// Implementation and Log4Net specifics here
}
Run Code Online (Sandbox Code Playgroud)
这些我将通过 IoC 或资源定位器注入/实例化,具体取决于我正在处理的应用程序的实现细节。
问题:我不知道这是否是个好主意?从头开始写这个,考虑可能
另一方面,对我的好处是:
任何指导 …
我正在尝试从Microsoft EDGE浏览器中读出TITLE和URL.最好使用System.Windows.Automation执行此操作,因为代码库已经将此用于其他问题.
我现在这么远:
AutomationId "TitleBar"
ClassName "ApplicationFrameWindow"
Name = [string]
=> Reading out this element gives me the TITLE
=> Walking it's children, I find the item "addressEditBox":
AutomationId "addressEditBox"
ClassName "RichEditBox"
Name "Search or enter web address"
=> I always get back the string "Search or enter web address"
=> This is the control where the url is in, though it isn't updated as the user goes to a website, it always returns a fixed string.
Run Code Online (Sandbox Code Playgroud)
在代码中: …
我有一个情境/上下文,其中特定视图在返回结果之前需要120秒.在执行简单的ALTER(或删除/创建)时,视图需要1到2秒.这怎么可能?我们如何解决这个问题 - 因为我们没有可以帮助我们的专用DBA.由于我们拥有链接服务器设置(MSSQL Server 2012抱怨这一点),因此无法制作索引视图.
以下是有关设置的信息.
TL; DR View_MAIN在一段时间后需要120秒.当我们在View_X,View_Y和View_MAIN上执行ALTER视图而不改变任何内容时,性能再次正常为1到2秒.
View_MAIN
SELECT
column1, column2, column3, column4, column5
FROM View_X
UNION ALL
SELECT
column1, column2, column3, column4, column5
FROM View_Y
Run Code Online (Sandbox Code Playgroud)
View_X
SELECT
LTRIM(RTRIM(table1.a)) as column1,
table2.b COLLATE Latin1_General_CI_AS as column2,
table1.c as column3,
CAST(table3.d AS DATETIME) as column4,
'XXXXXX' as column5
FROM
[linkedserver01].[DATABASE_IDN].[dbo].[dataForX] table1
LEFT OUTER JOIN [linkedserver02].[DATABASE_INFM] as table2
ON table2.id = table1.id
LEFT OUTER JOIN [linkedserver02].[DATABASE_PIK] as table3
ON table3.id = table1.id
Run Code Online (Sandbox Code Playgroud)
View_Y
SELECT
LTRIM(RTRIM(table1.a)) as column1,
table2.b COLLATE Latin1_General_CI_AS …Run Code Online (Sandbox Code Playgroud) 使用EF Core Migrations时,工具不会获取我的所有属性,只有"Id"和一些(不是全部)FK(导航属性).它似乎也非常理解"每个层次结构表" - 因为它设置了我想要的鉴别器,但是迁移文件本身并不反映我在模型命名空间中的属性(参见github代码).
我的DbContext位于:https://github.com/aredfox/TheConference/blob/master/InfoBooth/TheConference.InfoBooth.Data/InfoBoothContext.cs 我的模型类在这里:https://github.com/aredfox/TheConference/树/主/ InfoBooth/TheConference.InfoBooth.Core /型号
您可以在[ https://github.com/aredfox/TheConference/blob/master/InfoBooth/TheConference.InfoBooth.Data/Migrations/20170604125116_Initial.cs ] 查看生成的"初始迁移" .在那里你会看到它检测到所有Id属性(在基类中定义[Entity][1]),但没有检测到我的Model类的其他属性.
我使用添加控制台应用程序来运行迁移的方法(否则它将无法工作 - 请参阅Julie Lerman关于开始使用EF Core 的提示).因此,在运行迁移时,我这样做:dotnet ef --startup-project ../../TheConference.Infrastructure.ConsoleApp migrations add Initial.
我是否必须在EFCore中使用注释或modelBuilder或EntityTypeConfiguration形式让EF知道我想要采取什么?.
我正在尝试通过 Microsoft Graph Api (SDK) 获取驱动器的项目并尝试了以下选项:
_graphServiceClient.Drives[driveInfo.Id].Items.Request().GetAsync():,不幸的是,这会导致错误消息错误消息“请求格式错误或不正确”和代码“invalidRequest”。_graphServiceClient.Drives[driveInfo.Id].Request().GetAsync()但是,如果我执行,我会取回所有驱动器,但Items属性为null.
_graphServiceClient.Drives[driveInfo.Id].Request().Expand(d => d.Items).GetAsync(),这也会导致错误消息“请求格式错误或不正确”和代码“invalidRequest”。
我不知道如何从这里继续,仍在研究中,但目前文档让我一无所知。任何人都成功.Expand()或从云端硬盘获取实际文件?
谢谢,是
"VisibleChanged"事件是什么意思?
例如,在此行的代码中:
slidePane.VisibleChanged += new EventHandler(slidePane_VisibleChanged);
Run Code Online (Sandbox Code Playgroud)