小编Dan*_*Dan的帖子

如何在新实现的接口或基类之间做出决定?

在实现方面,我应该如何选择基本类型或接口?我尝试了几个例子,但我没有得到完整的想法:(

关于如何以及为什么的例子将受到高度赞赏..

c# asp.net interface base

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

格式化TimeSpan与岁月

我有一个有2个日期属性的类:FirstDay和LastDay. LastDay是可以为空的.我想以格式生成一个字符串"x year(s) y day(s)".如果总年数小于1,我想省略年份部分.如果总天数小于1,我想省略日期部分.如果年份或天数为0,则应分别说"天/年",而不是"天/年".

示例:
2.2年:"2年73天"
1.002738年:"1年1
天"0.
2年:" 73天" 2年:"2年"

我有什么作品,但它很长:

private const decimal DaysInAYear = 365.242M;

public string LengthInYearsAndDays
{
    get
    {
        var lastDay = this.LastDay ?? DateTime.Today;
        var lengthValue = lastDay - this.FirstDay;

        var builder = new StringBuilder();

        var totalDays = (decimal)lengthValue.TotalDays;
        var totalYears = totalDays / DaysInAYear;
        var years = (int)Math.Floor(totalYears);

        totalDays -= (years * DaysInAYear);
        var days = (int)Math.Floor(totalDays);

        Func<int, string> sIfPlural = value =>
            value > …
Run Code Online (Sandbox Code Playgroud)

.net c# formatting timespan .net-4.5

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

在.Net中将Url编码的表单数据转换为JSON的一些选项是什么

我有一个Web请求,正在发送格式的服务器数据application/x-www-form-urlencoded.我想把它转换成application/json.

例:

URL编码的表单数据:

Property1=A&Property2=B&Property3%5B0%5D%5BSubProperty1%5D=a&Property3%5B0%5D%5BSubProperty2%5D=b&Property3%5B1%5D%5BSubProperty1%5D=c&Property3%5B1%5D%5BSubProperty2%5D=d
Run Code Online (Sandbox Code Playgroud)

漂亮版本:

Property1=A
Property2=B
Property3[0][SubProperty1]=a
Property3[0][SubProperty2]=b
Property3[1][SubProperty1]=c
Property3[1][SubProperty2]=d
Run Code Online (Sandbox Code Playgroud)

以上数据需要转换为以下JSON数据:

{
    Property1: "A",
    Property2: "B",
    Property3: [
        { SubProperty1: "a", SubProperty2: "b" },
        { SubProperty1: "c", SubProperty2: "d" }]
}
Run Code Online (Sandbox Code Playgroud)

题:

有没有能够做到这一点的免费工具?我一直无法找到自己,如果它们存在,我宁愿消耗它们,也不愿自己写一个,但如果是这样,我会的.

AC#/ .Net解决方案是首选.

.net c# forms json .net-4.5

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

将字符串解析为可以为空的数字类型(1或2个字符串)

脚本

将字符串解析为可以为null的数字类型.如果解析不成功,则结果应为null; 否则结果应该是解析的值.

题

为了实现这一点,我总是使用以下简单但冗长的烦人方法:

string numericString = "...";

decimal? numericValue;
decimal temp;
if (decimal.TryParse(numericString, out temp))
{
    numericValue = temp;
}
else
{
    numericValue = null;
}
Run Code Online (Sandbox Code Playgroud)

我使用上面的方法,因为以下不编译:

decimal temp;
decimal? numericValue = decimal.TryParse(numericString, out temp) ? temp : null;
Run Code Online (Sandbox Code Playgroud)

有没有人知道第一位代码的版本与第二位一样短,整齐,可读?我知道我总是可以写一个封装第一段代码的扩展方法,但我想知道是否有任何方法可以在没有扩展方法的情况下做我想做的事情.

.net c#

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

哪个更有效:myType.GetType()或typeof(MyType)?

假设我有一个班级MyType:

sealed class MyType
{
    static Type typeReference = typeof(MyType);
    //...
}
Run Code Online (Sandbox Code Playgroud)

给出以下代码:

var instance = new MyType();
var type1 = instance.GetType();
var type2 = typeof(MyType);
var type3 = typeReference;
Run Code Online (Sandbox Code Playgroud)

哪些变量分配最有效?

GetType()或typeof()的性能是否足以在静态字段中保存类型是有益的?

.net c# runtime-type

13
推荐指数
2
解决办法
791
查看次数

正确处理Singleton IDisposable对象

场景:

应用程序实例化实现的类的单个实例IDisposable.该实例通过静态成员公开,使其可供应用程序的所有部分访问.单个实例需要在应用程序的生命周期内保持活动状态.

题

Dispose在应用程序关闭并且进程终止之前调用该方法有多重要?

我一直认为,在大多数这种情况下,没有必要打电话,Dispose因为过程的终止自然会清理资源.我错了吗?

.net c#

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

多个触发器与单个触发器

场景:

每次在表格中插入/更新/删除数据时,最多需要做3件事:

  1. 需要将数据记录到单独的表中
  2. 必须对隐式相关数据强制执行引用完整性(我指的是应该与外键关系链接的数据,但不是:例如.当更新Table1.Name也应更新Table2.Name为相同值时)
  3. 任意业务逻辑需要执行

不得更改数据库的体系结构和模式,并且必须使用触发器来完成要求.

题

哪个选项更好?:

  1. 每个操作(插入/更新/删除)的单个触发器,用于处理多个问题(日志,强制隐式参考完整性,并执行任意业务逻辑).可以命名此触发器D_TableName("D"表示删除).
  2. 每个操作的多个触发器被关注隔离.它们可以命名为:

    • D_TableName_Logging - 用于删除某些内容时的日志记录
    • D_TableName_RI
    • D_TableName_BL

我更喜欢选项2,因为单个代码单元只有一个问题.我不是DBA,对SQL Server足够了解让我变得危险.

是否有任何令人信服的理由来处理单个触发器中的所有问题?

sql sql-server triggers sql-server-2008-r2

8
推荐指数
2
解决办法
9444
查看次数

在 SQL Server 中正确修剪二进制数据

设想:

我正在将一个字符串插入一个二进制字段 (CONTEXT_INFO),然后尝试将其拉出并将其转换回字符串。当我这样做时,结果字符串的长度为 128,因为它有尾随空字符。

例子:

DECLARE @string VARCHAR(128)
DECLARE @binary VARBINARY(128)

SET @string = 'abcdefg'
SET @binary = CONVERT(VARBINARY(128), @string) --0x61626364656667000000...
SET CONTEXT_INFO @binary
SET @binary = CONTEXT_INFO()

-- I would like to change the following line so it trims trailing null chars
SET @string = CONVERT(VARCHAR(128), @binary)

SELECT
    @binary AS [binary],
    DATALENGTH(@binary) AS [binary.Length], --128 as expected
    @string AS [string],
    DATALENGTH(@string) AS [string.Length] --This is 128, but I need it to be 7
Run Code Online (Sandbox Code Playgroud)

题:

将二进制字段转换为字符串时,如何修剪尾随的空字符?

sql sql-server sql-server-2008-r2

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

c#:在子项目上显示工具提示

我有一个列表视图,在其中一列(不是第一列)中我想显示错误代码.

我无法做的是显示工具提示.我有

this.lstList.ShowItemToolTips = true;
...
ListViewItem value = lstList.Items.Add(name, name, 0);
...
if (lstList.Columns.Contains(lstColErrorCode))
{                                
  value.SubItems.Add(new ListViewItem.ListViewSubItem(value, errorCode.ToString()));
  value.ToolTipText = errorCode.ToString("X");
}
Run Code Online (Sandbox Code Playgroud)

我想获得代码的十六进制值,以显示在十进制值上方的工具提示中,但它显示在名称上方.

我无法得到任何我尝试过的东西(比如试图获得子项的坐标).我将不胜感激任何建议.

c# listview tooltip winforms subitem

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

如何在视频广告代码中添加空属性?

我只想使用javascript将'autobuffer'属性添加到我的视频标签中.

基本上:

var video = document.createElement('video');
video.addAttribute('autoBuffer');
Run Code Online (Sandbox Code Playgroud)

而且我会:

<video autoBuffer></video>
Run Code Online (Sandbox Code Playgroud)

我试过了:

video.setAttribute('autoBuffer'); => <video autoBuffer="undefined"></video>
Run Code Online (Sandbox Code Playgroud)

哪个错了......

javascript html5

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

.Net如何将Nullables设置为Null

该Nullable<T>类型定义为一个struct.在.Net中,您无法分配null给struct因为structs是无法表示的值类型null(除了Nullable<T>).

int i = null; // won't compile - we all know this
int? i = null; // will compile, and I'm glad it does, and it should compile, but why?
Run Code Online (Sandbox Code Playgroud)

如何Nullable<T>成为规则的例外"您不能分配null给值类型?" 反编译的代码Nullable<T>没有提供关于如何发生这种情况的见解.

.net c# clr null nullable

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

如何使用Reflection来解决这个问题.... (C#/.NET)

我正在开发C#/ .NET 3.5应用程序(并希望继续使用该版本的.NET),并且无法使用Reflection来解决如何解决此问题.我找到了解决方法,但不是"整洁".代码如下,我需要发现所有接口实现,以便将来在添加更多接口实现时,我不需要更改现有代码.

interface Ii { }
class A : Ii { }
class A1 : A { }
class A2 : A { }
class A3 : A { }
class B : Ii { }
class C : Ii{ }
// maybe in future class D : Ii { }
// maybe in future class E : Ii { }

class Helper
{
    static List<Type> GetAllInterfaceImplemenations()
    {// do reflection magic and return ["A1","A2","A3","B","C"] ...
     // I will use …
Run Code Online (Sandbox Code Playgroud)

.net reflection c#-3.0

-1
推荐指数
1
解决办法
113
查看次数