小编Lui*_*iso的帖子

C#从Inside基类中获取派生类型的名称

我正在解决在基类中处理鼠标事件的问题.由于断点不能很好地解决鼠标事件的故障,我想在事件处理程序中添加一些调试输出.但是,对于我来说,在调试信息中包含实际派生类的名称非常重要,因为基类中的事件处理代码由大量派生类共享,并且只有某些派生类出现问题.

我试过使用this.GetType().Name但这只是返回base类的类型.我当然可以开始修改类,比如说,将派生类传递type给它可以存储它的基类构造函数,但这显然只是一个临时需要的很多变化.有没有一种简单的方法从基类中获取派生类的类型?

c#

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

等待httpClient.SendAsync(httpContent)无响应

await httpClient.SendAsync(httpContent)没有响应,虽然我发现没有错误的代码/网址仍然挂起.请建议/帮助.

我的代码如下:

public async Task<string> Get_API_Result_String(string url, List<KeyValuePair<string, string>> parameters)
{
    string res = "";

    try
    {
        IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

        //Prepare url
        Uri mainurl = new Uri(settings[FSAPARAM.UserSettingsParam.SERVERNAME].ToString());
        Uri requesturl = new Uri(mainurl, url);

        var httpClient = new HttpClient();
        var httpContent = new HttpRequestMessage(HttpMethod.Post, requesturl);
        // httpContent.Headers.ExpectContinue = false;

        httpContent.Content = new FormUrlEncodedContent(parameters);

        HttpResponseMessage response = await httpClient.SendAsync(httpContent);

        var result = await response.Content.ReadAsStringAsync();
        res = result.ToString();

        response.Dispose();
        httpClient.Dispose();
        httpContent.Dispose();
    }
    catch (Exception ex)
    {
        Logger l = new …
Run Code Online (Sandbox Code Playgroud)

c# windows-phone

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

不能隐式地将类型'X'转换为'string' - 何时以及如何判断它"不能"?

现在我用Guids了.

我当然记得,在某些地方的代码中,这种隐式转换是有效的,而在其他地方却没有.直到现在我都没有看到这种模式.

编译器如何决定它何时不能?我的意思是,类型方法Guid.ToString()存在,不需要在需要这种转换时调用它吗?

有人可以告诉我在什么情况下这种转换是自动完成的,当我必须myInstance.ToString()明确调用时?

c# tostring type-conversion

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

分页Web API返回的大量数据

我们创建了用于查询Oracle数据库的WebAPI.查询返回巨大的结果,因此有时会抛出OutOfMemoryException.

建议是使用Paging概念.我不明白客户端应用程序将如何知道必须调用API多少次才能获得整个结果集.我还需要为分页创建一个单独的类,还是可以在我的API控制器中操作它.

任何人都可以帮我这个,因为这是我的第一个Web API.我们无法为此创建存储过程,因为我们只对数据库具有读访问权限

public HttpResponseMessage Getdetails([FromUri] string[] id)
{
    string connStr = ConfigurationManager.ConnectionStrings["ProDataConnection"].ConnectionString;
    using (OracleConnection dbconn = new OracleConnection(connStr))
    {
         var inconditions = id.Distinct().ToArray();
         var srtcon = string.Join(",", inconditions);
         DataSet userDataset = new DataSet();
         var strQuery = @"SELECT * from STCD_PRIO_CATEGORY where STPR_STUDY.STD_REF IN(" + srtcon + ")";
         using (OracleCommand selectCommand = new OracleCommand(strQuery, dbconn))
         {
              using (OracleDataAdapter adapter = new OracleDataAdapter(selectCommand))
             {
                 DataTable selectResults = new DataTable();
                 adapter.Fill(selectResults);
                 var returnObject = new { data …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc paging asp.net-web-api

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

我可以使用Linq to SQL进行C#字符串插值

在使用EF(至少达到6.1.3版本)时,假设您有类似这样的类:

 class Customer
 {
      public string FirstName { get; set; }
      public string LastName { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

如果要获得一个字段FullName,它是(FirstNameLastName)两者的串联作为查询结果中的字段,则必须执行以下操作:

db.Customers.Select(c => new { FullName = c.FirstName + " " + c.LastName })
Run Code Online (Sandbox Code Playgroud)

既然在C#中有字符串插值,你可以做这样的事情

db.Customers.Select(c => new { FullName = $"{c.FirstName} {c.LastName}" })
Run Code Online (Sandbox Code Playgroud)

这似乎是一个微不足道的例子(它是),但问题仍然存在.

我可以使用这个现成的,做我需要做一些技巧来得到它的工作或者是确保它不会工作?

c# linq entity-framework

10
推荐指数
2
解决办法
2609
查看次数

HttpContent标头不一致的枚举

我正在转变HttpContent为以下dto:

public class ContentDto 
{
     public string ContentType {get; set;}
     public string Headers {get; set; }
     public object Data { get; set; }

     public ContentDto(HttpContent content)
     {
          Headers = content.Headers.Flatten();
          // rest of the setup
     }
}
Run Code Online (Sandbox Code Playgroud)

我正在运行一些单元测试:

[Fact]
public void CanBuild()
{
     var content = new StringContent("some json", Enconding.UTF8, "application/json");
     var dto = new ContentDto(content);

     var contentHeaders = content.Headers.Flatten();

     Assert.Equal(contentHeaders, dto.Headers);
}
Run Code Online (Sandbox Code Playgroud)

并且该测试失败,因为Content-Length标题没有被我的dto捕获.但是,如果我这样做:

[Fact]
public void CanBuild()
{
     var content = new StringContent("some json", Enconding.UTF8, …
Run Code Online (Sandbox Code Playgroud)

c# http-headers httpcontent dotnet-httpclient

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

为什么F#中没有Seq.partition

在F#,我们有List.partitionArray.partition其返回列表的元组分别阵列的元组.

那么,为什么没有Seq.partition返回一个序列元组?

这是一个非常简单的实现: F#Snippets

所以...为什么不是核心的这一部分?

f#

9
推荐指数
2
解决办法
1113
查看次数

棱镜架构和clojure.spec之间的差异

我刚刚开始学习一些clojure,为了制作类似的类型(更像合同)进行验证等,首选解决方案是一个名为的库schema.

最近我了解到clojure 1.9会有类似名字的东西clojure.spec

谁能告诉我他们之间的区别?
我什么时候应该使用其中一个,优点和缺点等?

clojure

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

如果抛出自定义异常,则重定向asp.net mvc

如果在我的应用程序中抛出自定义错误,我需要全局重定向我的用户.我已经尝试将一些逻辑放入我的global.asax文件中以搜索我的自定义错误,如果它被抛出,执行重定向,但我的应用程序永远不会命中我的global.asax方法.它一直给我一个错误,说我的异常未被用户代码处理.

这就是我在全球范围内所拥有的.

protected void Application_Error(object sender, EventArgs e)
{
    if (HttpContext.Current != null)
    {
        Exception ex = HttpContext.Current.Server.GetLastError();
        if (ex is MyCustomException)
        {
            // do stuff
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的异常抛出如下:

if(false)
    throw new MyCustomException("Test from here");
Run Code Online (Sandbox Code Playgroud)

当我把它放入抛出异常的文件中的try catch时,我的Application_Error方法永远不会到达.任何人都有一些关于如何全局处理这个问题的建议(处理我的自定义异常)?

谢谢.

1/15/2010编辑:这是//做什么的东西.

RequestContext rc = new RequestContext(filterContext.HttpContext, filterContext.RouteData);
string url = RouteTable.Routes.GetVirtualPath(rc, new RouteValueDictionary(new { Controller = "Home", action = "Index" })).VirtualPath;
filterContext.HttpContext.Response.Redirect(url, true);
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc redirect exception-handling

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

使用.NET Core和xUnit同时针对多个框架的单元测试代码

我对.NET的核心部分图书馆哪些目标net45netstandard1.6,我想单元测试.我做了,dotnet new -t xunittest并创建了一个新的测试项目,netcoreapp1.0以便它只测试.NET Core代码.

我也尝试将其编译为目标,net45但后来我在测试发现时遇到了一系列错误.我的问题是

有没有办法测试针对两个(可能更晚)框架的代码与单个测试项目,还是我应该针对每个目标进行测试项目?

编辑:这是我project.json和我得到的消息:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable"
  },
  "dependencies": {
    "xunit": "2.1.0"
  },
  "testRunner": "xunit",
  "frameworks": {
    "net45": {
      "frameworkAssemblies": {
        "System.Runtime": "4.0.0.0"
      }
    },
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
        },
        "System.Runtime.Serialization.Primitives": "4.1.1",
        "dotnet-test-xunit": "2.2.0-preview2-build1029"
      },
      "imports": [
        "dotnet5.4",
        "portable-net451+win8"
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这些是我编译项目后得到的错误:

dotnet-test Error: 0 : [ReportingChannel]: Waiting for message failed …
Run Code Online (Sandbox Code Playgroud)

.net unit-testing xunit.net .net-core

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