小编Dav*_*vid的帖子

如何获得一天的开始和结束时间

在我的C#应用​​程序中,我传递一个格式为yyyymmdd-yyyymmdd的字符串变量,它表示来自和迄今.我想分别得到这些日期的开始和结束时间.目前我有以下代码,但想知道是否有更优雅的解决方案?

所以对于pdr = 20090521-20090523会得到"20090521 00:00:00"和"20090523 23:59:59"

private void ValidateDatePeriod(string pdr, out DateTime startDate, 
                                out DateTime endDate)
{
    string[] dates = pdr.Split('-');

    if (dates.Length != 2)
    {
        throw new Exception("Date period is of incorrect format");
    }

    if (dates[0].Length != 8 || dates[1].Length != 8)
    {
        throw new Exception("Split date periods are of incorrect format");
    }

    startDate = DateTime.ParseExact(dates[0] + " 00:00:00", 
        "yyyyMMdd HH:mm:ss", null);
    endDate = DateTime.ParseExact(dates[1] + "23:59:59", 
        "yyyyMMdd HH::mm:ss", null);
}
Run Code Online (Sandbox Code Playgroud)

c# datetime

48
推荐指数
6
解决办法
7万
查看次数

WiX未定义的预处理器变量

我开始使用WiX进行自动构建以创建我的c#项目的msi,并且遇到错误"Undefined preprocessor variable'$(var.MyProject.TargetDir)'"

我使用的是最新的WiX v3.0.5419.在我的wxs文件中,我试图使用此网页上列出的预处理器变量(http://blogs.msdn.com/jrock/archive/2008/01/29/complete-list-of-candle-preprocessor- variables.aspx)

<Component Id="MyId" Guid="MyGuid">
   <File Id="MyId" Name="MyName" KeyPath="yes" 
      Source="$(var.MyProject.TargetDir)\MyName.dll" />
</Component>
Run Code Online (Sandbox Code Playgroud)

我已将MyProject的引用添加到.wixproj中,如果我在记事本中打开它,我可以看到引用.

<ItemGroup>
  <ProjectReference Include="..\MyProject.csproj">
    <Name>MyProject</Name>
    <Project>{guid}</Project>
    <Private>True</Private>
  </ProjectReference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

这是我用来创建msi的nant构建脚本.也许是因为.wixproj知道构建中没有使用的项目引用?

<exec basedir="${tools.wix}" managed="true" program="candle.exe">
  <arg line='-out "${tools.wix.objfile}"' />
  <arg value="../MySetup.wxs" />
</exec>
Run Code Online (Sandbox Code Playgroud)

请问有人能开导我吗?

build-automation preprocessor wix wix3 votive

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

在C#中通过引用传递对象和对象列表

我有一个修改对象的委托.我从调用方法传递一个对象到委托,但调用方法不会获取这些更改.如果我将a List作为对象传递,则相同的代码可以工作.

我认为所有对象都是通过引用传递的,因此任何修改都会反映在调用方法中.那是对的吗?

我可以修改我的代码以将ref对象传递给委托.但我想知道为什么这是必要的.或者是吗?

public class Binder
{
    protected delegate int MyBinder<T>(object reader, T myObject);

    public void BindIt<T>(object reader, T myObject)
    {
        //m_binders is a hashtable of binder objects
        MyBinder<T> binder = m_binders["test"] as MyBinder<T>;
        int i = binder(reader, myObject);
    }
}

public class MyObjectBinder
{
    public MyObjectBinder()
    {
        m_delegates["test"] = new MyBinder<MyObject>(BindMyObject);
    }

    private int BindMyObject(object reader, MyObject obj)
    {
        obj = new MyObject
        {
            //update properties
        };
        return 1;
    }
}

///calling method in some …
Run Code Online (Sandbox Code Playgroud)

c# pass-by-reference

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

循环通过Windows命令行bat文件中的字符串值

我正在尝试为我的Windows机器创建一个批处理脚本,它循环遍历一个(字符串/十进制)值列表,并使用每个值作为循环内的参数.

下面是一个简单的for循环的例子,我想用它来显示所有不同的版本文件(从我的列表中)

FOR ? in ('1.1','1.2','2.4','3.9') do echo V[value_from_for_loop].txt
Run Code Online (Sandbox Code Playgroud)

我在如何遍历每个项目并在echo语句中使用变量时遇到问题.

windows command-line for-loop

39
推荐指数
3
解决办法
7万
查看次数

C#使用Reflection来复制基类属性

我想使用Reflection将所有属性从MyObject更新到另一个属性.我遇到的问题是特定对象是从基类继承的,并且不更新那些基类属性值.

以下代码复制顶级属性值.

public void Update(MyObject o)
{
    MyObject copyObject = ...

    FieldInfo[] myObjectFields = o.GetType().GetFields(
    BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);

    foreach (FieldInfo fi in myObjectFields)
    {
        fi.SetValue(copyObject, fi.GetValue(o));
    }
}
Run Code Online (Sandbox Code Playgroud)

我想看看是否有更多BindingFlags属性我可以用来帮助但无济于事.

c# reflection copy

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

如何在Moq实体框架中调用SqlQuery

我已经能够DbSet使用此链接模拟来自Moq的实体框架.

但是,我现在想知道如何模拟对SqlQuery的调用.不确定这是否可行或者如何依赖于模拟的db上下文知道正在调用什么"查询".

以下是我想要嘲笑的内容.

var myObjects = DbContext.Database
    .SqlQuery<MyObject>("exec [dbo].[my_sproc] {0}", "some_value")
    .ToList();
Run Code Online (Sandbox Code Playgroud)

我目前还没有尝试任何东西,因为不知道如何开始嘲笑这个例子.

的嘲讽DbSet是下方再次重申,我可以正确模拟返回DbSetMyObject的,但现在我试图嘲弄返回列表SQLQuery对MyObject的.

var dbContext = new Mock<MyDbContext>();
dbContext.Setup(m => m.MyObjects).Returns(mockObjects.Object);

dbContext.Setup(m => m.Database.SqlQuery... something along these lines
Run Code Online (Sandbox Code Playgroud)

c# entity-framework moq dbcontext

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

如何在GROUP BY中的多个条件上汇总列

我试图返回一份账户清单,包括余额,结果和收入

Account            Transaction
-------            -----------
AccountID          TransactionID
BankName           AccountID
Locale             Amount
Status
Run Code Online (Sandbox Code Playgroud)

这是我现在拥有的.有人可以解释我哪里错了吗?

select
    a.ACCOUNT_ID,
    a.BANK_NAME,
    a.LOCALE,
    a.STATUS,
    sum(t1.AMOUNT) as BALANCE,
    sum(t2.AMOUNT) as OUTCOME,
    sum(t3.AMOUNT) as INCOME
from ACCOUNT a
left join TRANSACTION t1 on t1.ACCOUNT_ID = a.ACCOUNT_ID
left join TRANSACTION t2 on t2.ACCOUNT_ID = a.ACCOUNT_ID and t2.AMOUNT < 0
left join TRANSACTION t3 on t3.ACCOUNT_ID = a.ACCOUNT_ID and t3.AMOUNT > 0
group by a.ACCOUNT_ID, a.BANK_NAME, a.LOCALE, a.[STATUS]
Run Code Online (Sandbox Code Playgroud)

UPDATE

根据下面的评论更正了t2左连接语法.

我期待的输出有望从问题中显而易见.对于6个帐户,SQL应返回6个帐户及其帐户的余额,收入和结果.

我提供的SQL问题是数字错误!根据评论,我认为问题源于连接多次,这是错误地汇总金额.

sql t-sql

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

如何在.NET Framework 4.5中构建C#VSTO

我的解决方案中的所有项目都设置为使用.net framework 4.5构建.

我正在尝试创建一个C#VSTO项目,但无法分配.net 4.5目标框架.这是必需的,所以我可以参考我的VSTO项目中的其他项目.

该错误表明该项目不能用于目标框架(.net 4.5).

或者,我是否必须在不使用VSTO项目的情况下实现excel加载项?

c# vsto .net-4.5

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

如何在automapper中的列表中展平条件对象

我有一个Item包含使用AutoMapperProduct映射到各自ViewModel对象的列表.

在我的MVC项目中,我有一个Action方法,显示Item一个选中的Product.为此我有一个ViewModel被调用的ItemDetailsViewModel包含扁平Item对象,一个列表ProductViewModel和一个扁平选择Product.

我遇到的困难是最好的展示这个扁平的选择Product.

可以把它想象成eBay,你Item可以选择多种变化,例如颜色.对我来说,有多种变化Products.当用户选择Product我想要返回ItemDetailsie Item,列表Products和所选择的Product.

我想知道最好的方法吗?目前我的方法是将一个映射Item到一个ItemDetailsViewModel,选择所需的ProductViewModel,然后专门将ProductViewModel后面的每个属性映射到ItemDetailsViewModel.此外,由于ItemProduct具有相同命名属性,最后一行映射将产品带回覆盖Item的ID和密码.

有关如何最好地配置映射的任何建议?

我已经省略了我所拥有的映射,因为它主要是直接的一对一映射,除了将选定的映射映射ProductViewModelItemDetailsViewModel.

Mapper.CreateMap<Item, ItemViewModel>()
    .ReverseMap();

Mapper.CreateMap<ProductViewModel, ItemDetailsViewModel>()
    .ForMember(d => d.ProductId, o => o.MapFrom(s => s.Id))
    .ForMember(d => d.ProductCode, …
Run Code Online (Sandbox Code Playgroud)

c# automapper automapper-3

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

控制器和动作的MVC属性

有没有办法在Controller级别添加属性,但不能在特定操作上添加.例如,如果我在我的控制器中有10个动作,那些动作中只有一个不需要我创建的特定属性.

[MyAttribute]
public class MyController : Controller
{
    public ActionResult Action1() {}
    public ActionResult Action2() {}

    [Remove_MyAttribute]
    public ActionResult Action3() {}
}

我可能会将此Action移动到另一个控制器(但不喜欢)或者我可以将MyAttribute应用于除Action3之外的所有操作,但只是想如果有更简单的方法?

c# asp.net-mvc

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