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.
以下代码给出了一个错误:
// 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循环吗?
我目前在我的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)
有没有办法有观点接受两个模型是这样,或者,一个方法来合并两个结果集(这两个表没有以任何方式联系?
我有一个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
功能呢?
我在我的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功能!
是否可以使用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) 我正在尝试为Windows服务创建一个设置项目.我已经按照本教程和许多其他人喜欢它,但在安装我的服务之后,我仍然看不到该服务.我已将服务的主要输出添加到应用程序目录,并创建了一个自定义操作,以将此输出包含在Install,Commit,Rollback和Uninstall中.
它声称它安装正确.
这有用吗?还有什么我可以尝试安装它吗?
我有一个使用WebView控件的Metro应用程序.我正在使用NavigateToString
加载可能包含超链接的html文件.我当时想要做的是检测何时选择了其中一个超链接,而不是允许在WebView控件中导航,而是启动IE并在那里查看页面.
这是否可能在WinRT约束内,如果是,如何?
到目前为止,我已经尝试捕获WebView_LoadCompleted()
事件,但虽然它确实在正确的时间触发,但我看不到有关URI的任何细节NavigationEventArgs
.
webview windows-8 windows-runtime winrt-xaml windows-store-apps
我正在开发一个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)
代码背后: …
我正在尝试从新的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
c# ×7
.net ×4
windows-8 ×2
.net-4.7 ×1
asp.net-core ×1
asp.net-mvc ×1
dictionary ×1
generics ×1
inkcanvas ×1
linq ×1
path ×1
unix ×1
vb.net ×1
wcf ×1
webview ×1
winrt-xaml ×1