请考虑以下枚举:
[System.Flags]
public enum EnumType: int
{
None = 0,
Black = 2,
White = 4,
Both = Black | White,
Either = ???, // How would you do this?
}
Run Code Online (Sandbox Code Playgroud)
目前,我已经编写了一个扩展方法:
public static bool IsEither (this EnumType type)
{
return
(
((type & EnumType.Major) == EnumType.Major)
|| ((type & EnumType.Minor) == EnumType.Minor)
);
}
Run Code Online (Sandbox Code Playgroud)
是否有更优雅的方式来实现这一目标?
更新:从答案中可以看出,EnumType.Either在枚举本身中没有位置.
关于是否强类型事件参数,有很多讨论.这个问题与此无关.我有以下课程(仅包括相关代码):
public abstract class Thread<TSender, TEventArgs>:
System.IDisposable
where TSender: Thread<TSender, TEventArgs>, new()
where TEventArgs: System.EventArgs, new()
{
public delegate void ThreadEventHandler (Thread<TSender, TEventArgs> sender, ThreadEventArgs e);
// This declaratino generates a VS 2012 warning.
public delegate void ThreadProcessIterationEventHandler<TSender, TEventArgs> (TSender sender, TEventArgs e);
}
Run Code Online (Sandbox Code Playgroud)
第二个代表的声明生成VS2012警告:
1. Type parameter 'TSender' has the same name as the type parameter from outer type 'Thread<TSender,TEventArgs>'
2. Type parameter 'TEventArgs' has the same name as the type parameter from outer type 'Thread<TSender,TEventArgs>'
Run Code Online (Sandbox Code Playgroud)
这种结构在逻辑上是正确的,因为其目的是为派生类提供包装的线程机制.它当然是合法代码,并按预期编译和运行.
我本来以为,有一个自指向约束可能被认为是不好的做法,但为什么TSender …
我有一个简单的控制台应用程序,如下所示:
private static void Main (string [] args)
{
System.Console.WriteLine("Initializing context...");
Database.Context.Initialize();
System.Console.WriteLine("Creating server...");
var server = new Server();
server.OnStarting += Server_OnStarting;
server.OnStarted += Server_OnStarted;
System.Console.WriteLine("Starting server...");
server.Start();
}
private static void Server_OnStarting (object sender, EventArgs e)
{
System.Console.WriteLine("Server_OnStarting.");
}
private static void Server_OnStarted (object sender, EventArgs e)
{
System.Console.WriteLine("Server_OnStarted.");
}
Run Code Online (Sandbox Code Playgroud)
服务器启动方法:
public bool Start ()
{
bool result = false;
lock (this._SyncRoot)
{
if (!this.Running)
{
this.Stopwatch.Reset();
this.RaiseOnStarting();
this.Running = true;
this.Terminate = false;
this.ThreadObject = new System.Threading.Thread(new System.Threading.ThreadStart(this.ProcessInternal)); …
Run Code Online (Sandbox Code Playgroud) 我正在使用NAudio(1.7.1.17)WasapiLoopbackCapture工作正常,我可以使用以下格式在Audacity中打开保存的原始PCM:
调用面向.NET 4 x86的代码.该文件是10秒的记录总计[3,515,904字节].
捕获:
var device = WasapiLoopbackCapture.GetDefaultLoopbackCaptureDevice();
using (var capture = new WasapiLoopbackCapture(device))
{
capture.ShareMode = AudioClientShareMode.Shared;
capture.DataAvailable += WasapiCapture_DataAvailable;
capture.RecordingStopped += WasapiCapture_RecordingStopped;
// Verified that [capture.WaveFormat] is [44.1KHz, 32 bit 2 ch].
capture.StartRecording();
Thread.Sleep(TimeSpan.FromSeconds(10));
capture.StopRecording();
}
private void WasapiCapture_DataAvailable (object sender, WaveInEventArgs e)
{
// Write [e.BytesRecorded] number of bytes from [e.Buffer] to a file.
}
private void WasapiCapture_RecordingStopped (object sender, StoppedEventArgs e)
{
// Verified that e.Exception was null.
}
Run Code Online (Sandbox Code Playgroud)
回放:
var file = new FileInfo(/* …
Run Code Online (Sandbox Code Playgroud) BigInteger类有一个返回字节数组的方法.这是否表明该类在内部使用字节数组以存储数字?
知道这一点非常重要,以便选择正确的数据类型来操作二进制数据.例如,如果类使用Int64数组,那么类似的数组可以更有效地通过任何调用函数来操作原始数据.
作为一个例子,我调用ToByteArray方法来遍历寻找特定二进制模式的字节.
我是Silverlight的新手,正在开发一个ASP.NET Web应用程序,它需要一个Silverlight项目来记录网络摄像头音频/视频流.
该解决方案包含一个包含业务实体的库项目,如[User],[BillingInfo]等,以及ASP .NET Web应用程序.
由于Silverlight不支持EF,如何在Silverlight中使用强类型实体对象?我不需要访问Context对象,但需要访问Entity类.
我使用Code First,因此必须使用Annotations标记实体,Silverlight将无法识别,因为DataAnnotations程序集不可参考.如果需要,切换到模型优先也是一种选择(尽管不太可取).
有没有人处理类似的情况?在Silverlight中获取强类型实体的最佳方法是什么?任何文章或参考资料也会有所帮助.谢谢.
技术(如果需要,可以选择升级):ASP .NET Web应用程序(.NET 4)实体框架5 Silverlight 5
我编写了一个客户端-服务器应用程序,旨在通过局域网交换文件(除其他外)。在服务器模式下,应用程序侦听具有特定标识标头的 TCP 连接。在客户端模式下,它尝试与用户提供的 IP 地址建立 TCP 连接。
我现在需要调整这个应用程序以在互联网上工作。没有太多的网络编程经验,我不知道如何在没有某种中央服务器(用于宣布存在等)的情况下实现这一目标。这不是一个选项。
假设我的应用程序在家庭网络后面的机器上以服务器模式运行。您(读者)有客户端模式的应用程序,我们需要连接。我们都没有静态 IP 地址。客户端有没有办法到达服务器?服务器和客户端都可以找出他们的公共 IP 地址,但除此之外,我不知道该怎么做。
任何指导将不胜感激。
编辑:根据答案,需要进行一些澄清。我的问题不是关于发现。客户端和服务器都可以查询它们的公共地址,用户可以通过其他媒介交换这些 IP。问题是,一旦知道对方的 IP 但双方都在没有适当端口转发的网络后面,如何建立连接。例如,我的应用程序使用端口 51200 作为默认端口。
我需要一种方法using
从代码中删除所有语句并完全限定引用的代码行.例:
之前:
using System.Windows.Forms;
namespace XYZ
{
class Temp
{
public void IRFunction()
{
MessageBox.Show("Hello!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
后:
namespace XYZ
{
class Temp
{
public void IRFunction()
{
System.Windows.Forms.MessageBox.Show("Hello!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我假设解决方案也会自动回答以下问题:如何枚举符合using
语句的引用名称空间,并可用于解析代码中的引用.
我正在开发一个大型项目,其中一个基类有数千个派生自它的类(多个开发人员正在研究它们).期望每个类重写一组方法.我首先使用符合可接受模式的代码模板生成了数千个类文件.我现在正在编写单元测试,以确保开发人员没有偏离这种模式.以下是生成的示例类:
// Base class.
public abstract partial class BaseClass
{
protected abstract bool OnTest ();
}
// Derived class. DO NOT CHANGE THE CLASS NAME!
public sealed partial class DerivedClass_00000001: BaseClass
{
/// <summary>
/// Do not modify the code template in any way.
/// Write code only in the try and finally blocks in this method.
/// </summary>
protected override void OnTest ()
{
bool result = false;
ComObject com = null;
// Declare ALL value and reference type …
Run Code Online (Sandbox Code Playgroud) c# ×9
.net ×7
asp.net ×1
audio ×1
biginteger ×1
delegates ×1
enums ×1
generics ×1
html ×1
naudio ×1
networking ×1
p2p ×1
pcm ×1
reflection ×1
resolve ×1
silverlight ×1
unit-testing ×1
using ×1