小编Dan*_*rth的帖子

在运行时更改默认app.config

我有以下问题:
我们有一个加载模块的应用程序(添加).这些模块可能需要app.config中的条目(例如WCF配置).因为模块是动态加载的,所以我不希望在我的应用程序的app.config文件中包含这些条目.
我想做的是以下内容:

  • 在内存中创建一个新的app.config,它包含模块中的配置部分
  • 告诉我的应用程序使用新的app.config

注意:我不想覆盖默认的app.config!

它应该透明地工作,以便例如ConfigurationManager.AppSettings使用该新文件.

在我这个问题的评价,我用同样的解决方案提出了为这里提供:刷新的app.config与NUnit的.
不幸的是,它似乎没有做任何事情,因为我仍然从正常的app.config获取数据.

我用这段代码来测试它:

Console.WriteLine(ConfigurationManager.AppSettings["SettingA"]);
Console.WriteLine(Settings.Default.Setting);

var combinedConfig = string.Format(CONFIG2, CONFIG);
var tempFileName = Path.GetTempFileName();
using (var writer = new StreamWriter(tempFileName))
{
    writer.Write(combinedConfig);
}

using(AppConfig.Change(tempFileName))
{
    Console.WriteLine(ConfigurationManager.AppSettings["SettingA"]);
    Console.WriteLine(Settings.Default.Setting);
}
Run Code Online (Sandbox Code Playgroud)

它打印相同的值twices,虽然combinedConfig包含除正常app.config之外的其他值.

.net c# app-config

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

System.Collections.Generic.IEnumerable'不包含'ToList'的任何定义

这是问题所在.我从ViewPage获得IEnumerable,当我尝试转换List时,它显示的错误如下:

' System.Collections.Generic.IEnumerable<Pax_Detail>'不包含'ToList'的定义,并且没有System.Collections.Generic.IEnumerable<Pax_Detail>可以找到接受类型' ' 的第一个参数的扩展方法'ToList' (你是否缺少using指令或汇编引用?)

这是我的控制器代码:

[HttpPost]
public ActionResult Edit_Booking(Booking model, IEnumerable<Pax_Detail> pax)
{
  List<Pax_Detail> paxList = new List<Pax_Detail>();
  paxList = pax.ToList(); //getting error here
  BookingDL.Update_Booking(model, paxList);
  return View();
}
Run Code Online (Sandbox Code Playgroud)

我在另一个控制器上应用了相同的逻辑.它工作正常.我不知道它有什么问题.我已经清理,重建项目,并重新启动我的笔记本电脑(虽然它是必要的).

c# asp.net-mvc-3

72
推荐指数
3
解决办法
10万
查看次数

在IEnumerable.Select中调用异步方法

我有以下代码,在类型之间转换项目RL使用异步方法:

class MyClass<R,L> {

    public async Task<bool> MyMethodAsync(List<R> remoteItems) {
        ...

        List<L> mappedItems = new List<L>();
        foreach (var remoteItem  in remoteItems )
        {
            mappedItems.Add(await MapToLocalObject(remoteItem));
        }

        //Do stuff with mapped items

        ...
    }

    private async Task<L> MapToLocalObject(R remoteObject);
}
Run Code Online (Sandbox Code Playgroud)

这是否可以使用IEnumerable.Select调用(或类似)来减少代码行?我试过这个:

class MyClass<R,L> {

    public async Task<bool> MyMethodAsync(List<R> remoteItems) {
        ...

        List<L> mappedItems = remoteItems.Select<R, L>(async r => await MapToLocalObject(r)).ToList<L>();

        //Do stuff with mapped items

        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

"无法将异步lambda表达式转换为委托类型 'System.Func<R,int,L>'.异步lambda表达式可能会返回void, Task或者Task<T> …

c# async-await

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

在Windows 10中使用PS将程序固定到任务栏

我正在尝试使用以下代码将程序固定到Windows 10(RTM)中的任务栏:

$shell = new-object -com "Shell.Application"  
$folder = $shell.Namespace((Join-Path $env:SystemRoot System32\WindowsPowerShell\v1.0))
$item = $folder.Parsename('powershell_ise.exe')
$item.invokeverb('taskbarpin');
Run Code Online (Sandbox Code Playgroud)

这适用于Windows 8.1,但不再适用于Windows 10.

如果我执行$item.Verbs(),我得到这些:

Application Parent Name
----------- ------ ----
                   &Open
                   Run as &administrator
                   &Pin to Start

                   Restore previous &versions

                   Cu&t
                   &Copy
                   Create &shortcut
                   &Delete
                   Rena&me
                   P&roperties
Run Code Online (Sandbox Code Playgroud)

如您所见,没有动词将其固定到任务栏.但是,如果我右键单击该特定文件,则选项位于:
用户界面中的可用动词

问题:
我错过了什么吗?
Windows 10中是否有新方法将程序固定到任务栏?

powershell windows-10

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

异步任务的顺序处理

假设以下同步代码:

try
{
    Foo();
    Bar();
    Fubar();
    Console.WriteLine("All done");
}
catch(Exception e) // For illustration purposes only. Catch specific exceptions!
{
    Console.WriteLine(e);
}
Run Code Online (Sandbox Code Playgroud)

现在假设所有这些方法都有一个异步的对应,我不得不使用那些由于某种原因,所以简单地包裹了整个事情的新任务是不是一种选择.
我将如何实现相同的行为?
我对"相同"的意思是:

  1. 如果抛出异常,则执行异常处理程序.
  2. 如果抛出异常,则停止执行以下方法.

我唯一能想到的就是可怕:

var fooTask = FooAsync();
fooTask.ContinueWith(t => HandleError(t.Exception),
                     TaskContinuationOptions.OnlyOnFaulted);
fooTask.ContinueWith(
    t =>
    {
        var barTask = BarAsync();
        barTask.ContinueWith(t => HandleError(t.Exception),
                             TaskContinuationOptions.OnlyOnFaulted);
        barTask.ContinueWith(
            t =>
            {
                var fubarTask = FubarAsync();
                fubarTask.ContinueWith(t => HandleError(t.Exception),
                                       TaskContinuationOptions.OnlyOnFaulted);
                fubarTask.ContinueWith(
                    t => Console.WriteLine("All done"),
                    TaskContinuationOptions.OnlyOnRanToCompletion);
            }, 
            TaskContinuationOptions.OnlyOnRanToCompletion);
    }, 
    TaskContinuationOptions.OnlyOnRanToCompletion);
Run Code Online (Sandbox Code Playgroud)

请注意:

  • 我需要一个适用于.NET 4的解决方案,所以async/await不可能.但是,如果它可以async/await随意显示如何工作.
  • 我不需要使用TPL.如果使用TPL是不可能的,那么另一种方法就可以了,也许使用Reactive …

.net c# .net-4.0 task-parallel-library

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

如何在Mono2.10上包含DocumentFormat.OpenXml.dll的引用?

我正在使用C#.net Windows桌面应用程序.我也希望与其他平台一起运行这些应用程序.所以,我使用Mono 2.10作为交叉编译器.运行时,意外地我的应用程序被终止,说错误消息像

错误:无法打开所选文件夹.
无法加载文件或程序集"DocumentFormat.OpenXml.dll,version = 2.0.5022.0,culture = neutral,PublicKeyToken = 31bf3856ad364e35"或其中一个依赖项.

我不知道这里有什么问题...我在c:\ program files\open xml sdk\v2\lib\DocumentFormat.OpenXml.dll上安装了openxml sdk2.0.

并将我的应用程序eXe放在同一个地方进行测试......

请指导我解决这个问题......

c# mono moma openxml-sdk

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

如何在EventArgs中传递对象

我有一个usercontrol,它在与Web服务通信后引发一个事件.父项在引发时处理此事件.我认为正确的方法是将webservice返回的对象作为eventargs传递给父对象???

如果这是正确的方法,我似乎无法找到如何这样做的说明.

用户控件

public event EventHandler LoginCompleted;
Run Code Online (Sandbox Code Playgroud)

然后在服务返回biz对象之后:

if (this.LoginCompleted != null)
        {
            this.LoginCompleted(this, new EventArgs() //this is where I would attach / pass my biz object no?);  
        }
Run Code Online (Sandbox Code Playgroud)

ctrl_Login.LoginCompleted += ctrl_Login_LoginCompleted;
....snip....
void ctrl_Login_LoginCompleted(object sender, EventArgs e)
    {
        //get my object returned by login
    }
Run Code Online (Sandbox Code Playgroud)

所以我的问题是将用户对象恢复为父级的"已批准"方法是什么?创建一个属性类,一切都可以访问并将其放在那里?

c#-4.0

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

静态的反义词是什么?

我只是想知道静态的反面是什么?我正在寻找一个词或术语来描述它.

例如:

#region Members

#region Static

private static Settings _Instance = null;

#endregion Static

#endregion Members

#region Properties

#region Static

/// <summary>
/// Gets the current instance of the settings class
/// </summary>
public static Settings Instance
{
    get
    {
        if (_Instance == null)
        {
            _Instance = new Settings();
        }

        return Settings._Instance;
    }
}

#endregion Static

#region Non Static?

#endregion Non Static?

#endregion Properties
Run Code Online (Sandbox Code Playgroud)

如果我将我的代码分隔到静态和非静态区域,我应该将其称为非静态区域?

它是非静态的吗?或者是否有一个实际的词来描述非静态的方法和属性

c# terminology

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

将一个项添加到IEnumerable <T>的最佳方法是什么?

这是我如何将一个项添加到IEnumerable对象:

//Some IEnumerable<T> object
IEnumerable<string> arr = new string[] { "ABC", "DEF", "GHI" };

//Add one item
arr = arr.Concat(new string[] { "JKL" });
Run Code Online (Sandbox Code Playgroud)

这很尴尬.但是,我没有看到类似的方法ConcatSingle().

有没有更简洁的方法将单个项添加到IEnumerable对象?

c# ienumerable extension-methods

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

如何使用EWS获取电子邮件正文,收据,发件人和CC信息?

谁能告诉我如何使用Exchange Web服务API获取电子邮件正文,收据,发件人,CC信息?我只知道如何获得主题.

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
    service.Credentials = new NetworkCredential("user", "password", "domain");
    service.Url = new Uri("https://208.243.49.20/ews/exchange.asmx");
    ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
    FindItemsResults<Item> findResults = service.FindItems(
        WellKnownFolderName.Inbox,
        new ItemView(10));

    foreach (Item item in findResults.Items)
    {
        div_email.InnerHtml += item.Subject+"<br />";
    }
Run Code Online (Sandbox Code Playgroud)

我的开发环境是asp.net c#Exchange-server 2010谢谢.

c# asp.net exchange-server exchangewebservices

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