小编jok*_*der的帖子

通过功能不起作用将%样式绑定应用于敲除

我想将div的宽度设置为等于javascript方法计算的百分比.我可以使用以下方法正确应用样式绑定:

<div class="bar" data-bind="style: { width: '50%'}"></div>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用函数生成输出时,它会中断:

<div class="bar" data-bind="style: { width: function(){return '50' + '%';}}"></div>
Run Code Online (Sandbox Code Playgroud)

javascript css knockout.js

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

如何正确编写异步XUnit测试?

我正在使用异步xUnit测试,并且注意到不一致的传递行为:

public async Task FetchData()
{
    //Arrange
    var result = await arrangedService.FetchDataAsync().ConfigureAwait(false);
    //Assert
}
Run Code Online (Sandbox Code Playgroud)

我经历了此测试执行的调用堆栈,并验证了我的所有库代码.ConfigureAwait(false)在每个任务之后都在调用。但是,尽管如此,执行a时,该测试和其他测试都会间歇性地失败Run All,但是当我通过调试器时,通过了断言和手动检查。很明显,我没有正确地做某事。我尝试ConfigureAwait(false)在测试本身中删除对测试的调用,以防万一有特殊的xUnit同步上下文,但是它没有任何改变。以一致的方式测试异步代码的最佳方法是什么?

编辑好的,这是我尝试创建正在运行的代码的超简化示例,以提供正在发生的情况的示例:

using Graph = Microsoft.Azure.ActiveDirectory.GraphClient;

public async Task FetchData()
{
    var adUsers = baseUsers //IEnumerable<Graph.User>
        .Cast<Graph.IUser>()
        .ToList();
    var nextPageUsers = Enumerable
        .Range(GoodIdMin, GoodIdMax)
        .Select(number => new Graph.User
        {
            Mail = (-number).ToString()
        })
        .Cast<Graph.IUser>()
        .ToList();

    var mockUserPages = new Mock<IPagedCollection<Graph.IUser>>();
    mockUserPages
        .Setup(pages => pages.MorePagesAvailable)
        .Returns(true);
    mockUserPages
        .Setup(pages => pages.CurrentPage)
        .Returns(new ReadOnlyCollection<Graph.IUser>(adUsers));
    mockUserPages
        .Setup(pages => pages.GetNextPageAsync())
        .ReturnsAsync(mockUserPages.Object)
        .Callback(() => …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous moq xunit

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

存储过程需要一个我已经传入的参数

我正在尝试使用此声明执行存储过程:

ALTER PROCEDURE [dbo].[getByName]
    @firstName varchar,
    @lastName varchar
AS
...
Run Code Online (Sandbox Code Playgroud)

我在C#中调用如下:

public List<Person> GetPersonByName(string first, string last)
{
    var people = new List<Person>();
    var connString = ConfigurationManager.ConnectionStrings["MyDbConnString"].ConnectionString;
    using (var conn = new SqlConnection(connString))
    {
        using (var cmd = new SqlCommand("dbo.getByName",conn))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("@firstName", SqlDbType.VarChar, 50)).Value = first;
            cmd.Parameters.Add(new SqlParameter("@lastName", SqlDbType.VarChar, 50)).Value = last;
            conn.Open();
            using (var reader = cmd.ExecuteReader())
            {
                people = ReadPeopleData(reader);
            }
            conn.Close();
        }
    }
    return people;
}
Run Code Online (Sandbox Code Playgroud)

但我刚刚收到这个错误:

过程或函数'getByName'需要未提供的参数'@firstName'.

更新:

ALTER PROCEDURE [dbo].[getEmployeesByName]
    @firstName …
Run Code Online (Sandbox Code Playgroud)

c# t-sql sql-server ado.net stored-procedures

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

不能用泛型继承

这个类声明:

public abstract class Repository<TE, TD>
    where TE : class, IEntity, new()
    where TD : DataProvider<TE>
Run Code Online (Sandbox Code Playgroud)

此类签名无法实现:

public class SqlRepository<TE> : Repository<TE, SqlDataProvider>
    where TE : SqlEntity, new()
Run Code Online (Sandbox Code Playgroud)

哪里SqlEntity : IEntitySqlDataProvider : DataProvider<SqlEntity>,我得到这个错误:

错误1类型〜不能用作泛型类型或方法'〜.Repository'中的类型参数'TD'.没有从'〜.SqlDataProvider'到'〜.DataProvider'的隐式引用转换.

为什么它不能将SqlEntity转换为它实现的接口?

c# generics

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

自定义App.config部分导致配置加载错误

我在app.config文件中使用自定义配置部分,根据Jan Remunda的帖子在应用程序中发生错误时自动向某些管理员发送电子邮件:如何在app.config中创建自定义配置部分?

App.config中:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>

  <configSections>
    <section name="ErrorEmailer" type="EmailTester.ErrorEmailer" />
  </configSections>

  <ErrorEmailer>
    <SmtpServer address="mail.smtphost.com" />
    <FromAddress address="from@host.com" />
    <ErrorRecipients>
      <ErrorRecipient address="example@example.com" />
      <ErrorRecipient address="example@example.com" />
    </ErrorRecipients>
  </ErrorEmailer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我添加了以下配置元素:

public class ErrorRecipient : ConfigurationElement
{
    [ConfigurationProperty("address", IsRequired = true)]
    public string Address
    {
        get
        {
            return this["address"] as string;
        }
    }
}

public class SmtpServer : ConfigurationElement
{
    [ConfigurationProperty("address", IsRequired = true)]
    public string Address
    {
        get
        {
            return this["address"] …
Run Code Online (Sandbox Code Playgroud)

.net c# app-config

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

将样式应用于所有元素

我真正喜欢做的一件事是默认使用我的所有 div

box-sizing: border-box;
Run Code Online (Sandbox Code Playgroud)

它使得管理元素尺寸变得非常容易。但我想让它成为所有显示为块的元素的默认样式,并在需要时显式覆盖它。有没有简单的方法可以做到这一点,或者我是否必须手动指定哪些元素接收此样式?我知道 99% 的问题都会得到解决

html, body, div{
    box-sizing: border-box;
}
Run Code Online (Sandbox Code Playgroud)

但仍然有很多元素需要这个,我不想忘记并发现我的页面看起来像垃圾。

css

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

不能从内部课堂公开上课?

我有一个内部课:

internal abstract class Reader
{
    //internal abstract void methods
}
Run Code Online (Sandbox Code Playgroud)

我不能上这堂课:

public abstract class CustomFileReader : Reader
{
}
Run Code Online (Sandbox Code Playgroud)

因为它比它继承的类更明显.我想这样做是为了强制你必须继承Reader类的公共可访问的继承者而不是基类.这是可能的还是我必须暴露基类?

c#

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

即使使用默认教程,也无法应用knockout绑定

我试图绑定适用于特定的DOM元素,但我有我的任何代码或例子没有成功在这里

这就是我现在所拥有的:

var Test = function(first, last){
    this.first = ko.observable(first);
    this.last = ko.observable(last);
}

ko.applyBindings(new Test("Hello", "World"), $("#Element").get());
Run Code Online (Sandbox Code Playgroud)

我一直这样

Uncaught Error: ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node 
Run Code Online (Sandbox Code Playgroud)

我试过给它只有jQuery元素也无济于事.我可以通过视觉和控制台测试确认$("#Element")是DOM的一部分.

javascript jquery knockout.js

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

MySqlCommand.ExecuteScalar()没有返回任何内容

当我运行以下代码时:

query = "select count(*) from table where name = '?name'";
MySqlConnection connection = 
  new MySqlConnection(ConfigurationManager.ConnectionStrings["mydb"].ToString());
connection.Open();
MySqlCommand command = new MySqlCommand(query,connection);
command.Parameters.Add("?name", name);
Int32 number = command.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

number 即使被转换为int也始终为零.

我试过将它转换为int64,没有骰子.我试过了command.Prepare().我尝试过使用Convert.ToInt32()和其他各种变化.我已经尝试了关于太阳引述包括逐字什么下的一切意味着我得到没有骰子.试图将对象转换为整数,作为一个long,作为int32,这似乎都不起作用.这些结果始终为0或导致MySQL错误.

编辑:堆栈溢出将不会在代码标记中正确格式化该代码,我道歉

c# mysql sql asp.net

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

使用非默认构造函数创建在运行时确定的类型的对象

我有一个抽象类A和实现B和C.我还有一个存储A对象信息的数据库.该表有一个名为"Name"的列,用于确定是否应使用数据构造B或C.

public abstract class A { }

public class B,C : A
{
    public B,C(TableData data)
    {
        //Do Stuff.
    }
}

public class TableData
{
    string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果Name是"Banana",我希望这个创建一个B的实例; 如果它是"Carrot"我希望这个创建一个C的实例:

A myObj = { Reflection? }
Run Code Online (Sandbox Code Playgroud)

反射以某种方式使用B或C构造函数并将此新创建的对象分配给myObj.我已经研究过使用反射,但是那里允许使用非默认构造函数的大多数方法都非常复杂,并且采用我以前从未使用过的参数:

http://msdn.microsoft.com/en-us/library/System.Activator.CreateInstance(v=vs.110).aspx http://msdn.microsoft.com/en-us/library/dd384354.aspx

有一个更好的方法吗?如果没有,我如何使用第二个链接动态分配此类型?

如果有一些方法可以简单地这样做:

CreateInstance("Namespace.Type", [ ConstructorParam1, ConstructorParam2, ... ])
Run Code Online (Sandbox Code Playgroud)

这就是我所需要的一切.

c# reflection dynamic

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

无法将null传递给存储过程

我正在尝试执行如此定义的存储过程:

PROCEDURE [dbo].[SearchEmployees]
    @employeeId INT = NULL,
    @userName VARCHAR(50) = NULL,
    @firstName VARCHAR(50) = NULL,
    @lastName VARCHAR(50) = NULL

...
SELECT *
FROM Employee e
WHERE e.EmployeeId = @employeeId
    OR e.UserName LIKE(@userName)
    OR e.FirstName LIKE(@firstName)
    OR e.LastName LIKE(@lastName)
Run Code Online (Sandbox Code Playgroud)

我从这样的代码中调用它:

//employeeId = null, userName = "b.evans", firstName = "Bob", lastName = "Evans"
...
command.Parameters.AddWithValue("@employeeId", employeeId);
command.Parameters.AddWithValue("@userName", userName);
command.Parameters.AddWithValue("@firstName", firstName);
command.Parameters.AddWithValue("@lastName", lastName);
try
{
    connection.Open();
    using (var reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            results.Add(mapper.Map(reader));
        }
    }
}
finally
{
    connection.Close();
} …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server

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