我有以下代码:
using System.Configuration;
namespace test
{
public partial class MyService : ServiceBase
{
public static ReadConnectionStrings()
{
ConnectionStringSettingsCollection connections =
ConfigurationManager.ConnectionStrings;
Run Code Online (Sandbox Code Playgroud)
但是,它无法识别ConfigurationManager.我直接从这里获取了这段代码
所以我显然遗漏了一些东西,但无法确定是什么.
有谁知道是否可以在switch语句中包含一个范围(如果是,如何)?
例如:
switch (x)
{
case 1:
//do something
break;
case 2..8:
//do something else
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
编译器似乎不喜欢这种语法 - 它也不喜欢:
case <= 8:
Run Code Online (Sandbox Code Playgroud) 我想在C#中创建一个属性,用于设置或返回数组的单个成员.目前,我有这个:
private string[] myProperty;
public string MyProperty[int idx]
{
get
{
if (myProperty == null)
myProperty = new String[2];
return myProperty[idx];
}
set
{
myProperty[idx] = value;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我得到以下编译错误:
错误的数组声明符:要声明托管数组,等级说明符在变量的标识符之前.要声明固定大小的缓冲区字段,请在字段类型之前使用fixed关键字.
我有一个WinRT Metro项目,它根据所选项目显示图像.但是,某些选定的图像将不存在.我想要做的是陷入不存在的情况并显示替代方案.
到目前为止,这是我的代码:
internal string GetMyImage(string imageDescription)
{
string myImage = string.Format("Assets/MyImages/{0}.jpg", imageDescription.Replace(" ", ""));
// Need to check here if the above asset actually exists
return myImage;
}
Run Code Online (Sandbox Code Playgroud)
示例调用:
GetMyImage("First Picture");
GetMyImage("Second Picture");
Run Code Online (Sandbox Code Playgroud)
所以Assets/MyImages/SecondPicture.jpg
存在,但Assets/MyImages/FirstPicture.jpg
没有.
起初我想过使用WinRT相当于File.Exists()
,但似乎没有.无需尝试打开文件并捕获错误,我可以简单地检查文件是否存在,或者文件是否存在于项目中?
我有一个最初针对4.6.1的网络应用.此Web应用程序引用类库; 反过来,这引用了Net Standard 1.6类库.
添加对Net Standard库的引用是最新的更改,并且似乎导致它中断:Web应用程序正常工作,直到引入Net Standard库; 在这一点上,我开始得到错误:
无法加载文件或程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.该系统找不到指定的文件.
System.Runtime
包含在Web应用程序中作为NuGet包.
它可能没有关系,但是当我查看packages目录时; 我看到System.Runtime.4.3.0\lib有net45
和net462
目录,但不是4.6.1或4.7(见下文我为什么会这样).
我试过的一些事情没有奏效:
网上最近有足够的东西让我觉得我不是唯一经历过这种情况的人; 虽然我没有找到任何解释可能是什么原因.任何人都可以解释可能导致这种情况的原因,或者我可以使用的任何诊断步骤吗?
我有一些使用服务总线事件数据的代码,我怀疑我需要使用offset属性,因为目前我的程序(或似乎是)一遍又一遍地重新运行相同的事件中心数据.
我的代码如下:
public class EventHubListener : IEventProcessor
{
private static EventHubClient _eventHubClient;
private const string EhConnectionStringNoPath = "Endpoint=...";
private const string EhConnectionString = EhConnectionStringNoPath + ";...";
private const string EhEntityPath = "...";
public void Start()
{
_eventHubClient = EventHubClient.CreateFromConnectionString(EhConnectionString);
EventHubConsumerGroup defaultConsumerGroup = _eventHubClient.GetDefaultConsumerGroup();
EventHubDescription eventHub = NamespaceManager.CreateFromConnectionString(EhConnectionStringNoPath).GetEventHub(EhEntityPath);
foreach (string partitionId in eventHub.PartitionIds)
{
defaultConsumerGroup.RegisterProcessor<EventHubListener>(new Lease
{
PartitionId = partitionId
}, new EventProcessorCheckpointManager());
Console.WriteLine("Processing : " + partitionId);
}
}
public Task ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> messages)
{
foreach (EventData …
Run Code Online (Sandbox Code Playgroud) 我正在使用.NET 3.5,我想自动发送邮件.我目前正在使用以下内容:
Microsoft.Office.Interop.Outlook.MailItem mailMsg =
(Microsoft.Office.Interop.Outlook.MailItem)outlookApplication.CreateItem(
Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
mailMsg.To = recipient;
mailMsg.Subject = subject;
mailMsg.Body = body;
mailMsg.Send();
Run Code Online (Sandbox Code Playgroud)
但是,我发现有几篇文章似乎暗示我应该使用以下方法:
System.Net.Mail.MailMessage mailMsg = new System.Net.Mail.MailMessage();
mailmsg.To = recipient;
mailmsg.Subject = subject;
mailmsg.Body = body;
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我两个名称空间之间的差异,以及为什么你可能想要使用另一个名称空间?
是否可以调用Application.Run,但是不传递表单参数,或者如果没有表单可以调用,是否有替代方法?
Run方法似乎没有任何不接受表单的重载.
例如,如果我想首先实例化一个类,然后调用该表单,那么是否可以执行以下操作:
Application.Run(myClass);
Run Code Online (Sandbox Code Playgroud)
为了澄清,我仍然想要.Run()提供的功能.也就是说,建立一个循环来保持应用程序运行,但不是跟踪表单,而是跟踪类或其他对象.
这最初与紧凑框架有关.我假设这就是为什么Run方法没有我想要的重载.
我正在尝试创建一个MediaComposition.我成功地将多个png图像组合成一个视频; 但是,创建的文件具有黑色背景.起初我认为这可能是因为文件是png文件,但jpgs也会出现相同的bevaviour.以下是我如何保存图像:
public async Task<bool> Save(InkCanvas canvas, StorageFile file)
{
if (canvas != null && canvas.InkPresenter.StrokeContainer.GetStrokes().Count > 0)
{
if (file != null)
{
using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
await canvas.InkPresenter.StrokeContainer.SaveAsync(stream);
}
}
Clear(canvas);
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
它可以保存图像,但背景是alpha.这意味着当我尝试将这些链接到一个媒体合成中时,没有背景,它呈现为黑色.我在创建MediaComposition时尝试使用叠加来纠正这个问题:
MediaClip overlayVideoClip = MediaClip.CreateFromColor(Colors.White, new TimeSpan(0, 1, 0));
MediaOverlay mo = new MediaOverlay(overlayVideoClip);
MediaOverlayLayer mol = new MediaOverlayLayer();
mol.Overlays.Add(mo);
composition.OverlayLayers.Add(mol);
Run Code Online (Sandbox Code Playgroud)
但无济于事.我怀疑在这种情况下我误解了覆盖一词的含义.所以,我的问题是:是否可以在合成时叠加视频,如果是,如何?或者,如果需要在图像本身中完成,如何使用背景保存图像?
编辑:
我已经取得了进步(?); 以下编译并运行,但创建一个纯黑色图像:
public async Task TestSave(InkCanvas canvas, StorageFile file)
{
RenderTargetBitmap rtb =
new RenderTargetBitmap(); …
Run Code Online (Sandbox Code Playgroud) 使用DEBUG配置,我可以使用以下类型的语法打开和关闭行为:
#if DEBUG
Console.WriteLine("Debug");
#else
Console.WriteLine("Not Debug");
#endif
Run Code Online (Sandbox Code Playgroud)
但是,如果我设置了不同的配置,请说:TEST然后这不起作用:
#if TEST
Console.WriteLine("Test");
#else
Console.WriteLine("Not Test");
#endif
Run Code Online (Sandbox Code Playgroud)
有没有办法检查这些?