小编Pau*_*els的帖子

#Define Compiler Directive in C#

In C, I could declare a compiler directive as follows:

#define MY_NUMBER 10
Run Code Online (Sandbox Code Playgroud)

However, in C#, I only appear to be able to do this:

#define MY_NUMBER
Run Code Online (Sandbox Code Playgroud)

Which is obviously useless in this case.

Is this correct, or am I doing something wrong? If not, can anyone suggest a way of doing this, either at namespace or solution level? I thought of maybe creating a static class, but that seems to be overkill for one value.

c# compiler-directives

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

通用词典 - 获得转换错误

以下代码给出了一个错误:

        // GetDirectoryList() returns Dictionary<string, DirectoryInfo>
        Dictionary<string, DirectoryInfo> myDirectoryList = GetDirectoryList();

        // The following line gives a compile error
        foreach (Dictionary<string, DirectoryInfo> eachItem in myDirectoryList)
Run Code Online (Sandbox Code Playgroud)

它给出的错误如下:

Cannot convert type 'System.Collections.Generic.KeyValuePair<string,System.IO.DirectoryInfo>' to 'System.Collections.Generic.Dictionary<string,System.IO.DirectoryInfo>’
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么要尝试执行此转换?我可以不在这种类型的对象上使用foreach循环吗?

c# generics dictionary

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

MVC - 将多个数据表传递给视图

我目前在我的MVC项目的HomeController中有以下代码:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        MyDataContext dc = new MyDataContext();

        IQueryable<Table1Data> j =
            from n in dc.Table1                     
            select n;

        return View(j);
    }
Run Code Online (Sandbox Code Playgroud)

这样可行,但现在我想将第二个表传递到同一个视图.所以我在想我应该能做这样的事情:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        MyDataContext dc = new MyDataContext();

        IQueryable<Table1Data> j =
            from n in dc.Table1                     
            select n;

        IQueryable<Table2Data> l =
            from k in dc.Table2        
            select k;

        return View(j, l);
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法有观点接受两个模型是这样,或者,一个方法来合并两个结果集(这两个表没有以任何方式联系?

c# linq asp.net-mvc asp.net-mvc-viewmodel

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

从服务访问WCF客户端凭据

我有一个WCF服务的以下调用(使用基本身份验证):

client.ClientCredentials.UserName.UserName = "username";
client.ClientCredentials.UserName.Password = "password";

client.MyServiceFunction();
Run Code Online (Sandbox Code Playgroud)

在服务器上,我有:

class MyService : IMyService
{
    string MyServiceFunction()
    {
         return GetUsernameHere();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,我可以在WCF服务中访问这些凭据,如果是,如何访问?也就是说,我该如何实现这个GetUsernameHere功能呢?

.net c# vb.net wcf basic-authentication

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

在UWP墨水画布上显示背景图像

我在我的UWP应用程序中有一个InkCanvas,并希望显示一个图像(理想情况下是Canvas的一部分,但除此之外,以某种方式覆盖它(我的想法是我可以将更改的图像保存回图像文件). WPF似乎允许InkCanvas有孩子,但在UWP似乎不可能.我尝试了以下内容:

        <InkCanvas x:Name="drawInkCanvas">
            <Image Source="{Binding DrawingImage}"/>

        </InkCanvas>
Run Code Online (Sandbox Code Playgroud)

但这不起作用; 我也试过这个:

        <Grid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
            <InkCanvas x:Name="drawInkCanvas" Opacity=".5"/>
            <Image Source="{Binding DrawingImage}" Opacity=".5"/>

        </Canvas>
Run Code Online (Sandbox Code Playgroud)

公平地说,我对此没有太大的期望; 无论如何,虽然它确实有点工作,但它使图像和InkCanvas看起来都不对,显然,我不允许保存生成的图像.

理想情况下,会有背景图像或类似的东西.有什么我可以用来实现这一目标; 我认为我可能不得不用标准画布替换InkCanvas,然后重新编写所有InkCanvas功能!

c# inkcanvas win-universal-app

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

System.IO.Path或与Unix路径等效使用

是否可以使用System.IO.Path类或一些类似的对象来格式化unix样式路径,提供与PATH类类似的功能?例如,我可以这样做:

Console.WriteLine(Path.Combine("c:\\", "windows"));
Run Code Online (Sandbox Code Playgroud)

这表现了:

"C:\\windows"
Run Code Online (Sandbox Code Playgroud)

但我是否尝试使用正斜杠(/)类似的东西它只是为我反转它们.

Console.WriteLine(Path.Combine("/server", "mydir"));
Run Code Online (Sandbox Code Playgroud)

这表现了:

"/server\\mydir"
Run Code Online (Sandbox Code Playgroud)

.net c# unix path

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

Windows服务安装项目

我正在尝试为Windows服务创建一个设置项目.我已经按照教程和许多其他人喜欢它,但在安装我的服务之后,我仍然看不到该服务.我已将服务的主要输出添加到应用程序目录,并创建了一个自定义操作,以将此输出包含在Install,Commit,Rollback和Uninstall中.

它声称它安装正确.

这有用吗?还有什么我可以尝试安装它吗?

windows-services setup-project visual-studio-2010

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

WinRt WebView控件处理控件内的导航

我有一个使用WebView控件的Metro应用程序.我正在使用NavigateToString加载可能包含超链接的html文件.我当时想要做的是检测何时选择了其中一个超链接,而不是允许在WebView控件中导航,而是启动IE并在那里查看页面.

这是否可能在WinRT约束内,如果是,如何?

到目前为止,我已经尝试捕获WebView_LoadCompleted()事件,但虽然它确实在正确的时间触发,但我看不到有关URI的任何细节NavigationEventArgs.

webview windows-8 windows-runtime winrt-xaml windows-store-apps

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

WinRT - 在保持UI响应的同时加载数据

我正在开发一个Windows Metro应用程序,并且我遇到了一个UI无法响应的问题.据我所知,原因如下:

    <ListView
...
        SelectionChanged="ItemListView_SelectionChanged"            
...
Run Code Online (Sandbox Code Playgroud)

此事件在此处理:

    async void ItemListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (this.UsingLogicalPageNavigation()) this.InvalidateVisualState();

        MyDataItem dataItem = e.AddedItems[0] as MyDataItem;
        await LoadMyPage(dataItem);
    }

    private async Task LoadMyPage(MyDataItem dataItem)
    {            
        SyndicationClient client = new SyndicationClient();
        SyndicationFeed feed = await client.RetrieveFeedAsync(new Uri(FEED_URI));                    

        string html = ConvertRSSToHtml(feed)
        myWebView.NavigateToString(html, true);            
    }
Run Code Online (Sandbox Code Playgroud)

LoadMyPage需要一段时间才能完成,因为它从Web服务获取数据并将其加载到屏幕上.然而,看起来UI正在等待它:我的猜测是,直到上述事件完成.

所以我的问题是:我能做些什么呢?有没有更好的事件我可以挂钩,还是有其他方法来处理这个?我考虑过开始一个后台任务,但这对我来说似乎有些过分.

编辑:

只是为了澄清这个问题的规模,我说的是最多3到4秒没有反应.这绝不是一项长期工作.

编辑:

我已经尝试了下面的一些建议,但是,该SelectionChanged函数的整个调用堆栈正在使用async/await.我已经跟踪了这句话:

myFeed = await client.RetrieveFeedAsync(uri);
Run Code Online (Sandbox Code Playgroud)

在完成之前似乎没有继续处理.

编辑:

我意识到这将转变为战争与和平,但下面是使用空白的地铁应用程序和按钮复制问题:

XAML:

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <StackPanel>
        <Button Click="Button_Click_1" Width="200" Height="200">test</Button>
        <TextBlock x:Name="test"/>
    </StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)

代码背后: …

.net c# microsoft-metro windows-8 windows-runtime

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

使用ASP.Net Core 2 Web App使用EF6调用Full库

我正在尝试从新的Asp Net Core 2.0 Web应用程序调用.Net 4.7数据访问库(使用Entity Framework 6).

问题是EF6似乎无法获得DbProviderFactory.我的工作理论是,这应该是在调用程序的app/web.config中提供的.我得到的错误是:

System.TypeLoadException:'无法从程序集'System.Data,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'加载类型'System.Data.Common.DbProviderFactories'.'

为了解决这个问题,我创建了一个DbConfiguration类:

public class MyDbConfiguration : DbConfiguration
{
    public MyDbConfiguration()
    {
        SetProviderFactory("System.Data.SqlClient", System.Data.SqlClient.SqlClientFactory.Instance);
        SetProviderServices("System.Data.SqlClient", SqlProviderServices.Instance);

    }
}

[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyDbContext : DbContext, IMyDbContext
{
    public MyDbContext(string connectionString)
        : base(connectionString)
    {


    }
Run Code Online (Sandbox Code Playgroud)

断点显示它正确执行MyDbConfiguration,但仍然抛出错误.我已经在.Net Core Web应用程序上安装了System.Data.SqlClient和System.Data.Common包.

我没有发现任何明确说明我想要做的事情(一般)是不可能的,所以我正在假设我的DBConfiguration实现有问题.请有人指出我正确的方向吗?

.net entity-framework-6 asp.net-core asp.net-core-2.0 .net-4.7

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