为了将泛型类型参数约束为枚举类型,我之前将它们限制为这样,这是我在C#7.3之前为枚举约束类型T的最佳方法:
void DoSomething<T>() where T : struct, IComparable, IConvertible, IFormattable
Run Code Online (Sandbox Code Playgroud)
现在,C#7.3添加了一个新功能来约束泛型类型System.Enum.我尝试使用今天发布的VS2017 15.7更新的枚举约束,并且当我这样写时它会成功编译(假设我有一个using System;指令):
void DoSomething<T>() where T : Enum
Run Code Online (Sandbox Code Playgroud)
但是,使用enum关键字不起作用并导致编译器抛出以下错误(后面有更多错误,期待一个方法体,但我猜这里并不值得一提):
void DoSomething<T>() where T : enum
^ error CS1031: Type expected
error CS1002: ; expected
^ error CS1001: Identifier expected
error CS1514: { expected
error CS1513: } expected
Run Code Online (Sandbox Code Playgroud)
由于有一个struct约束适用于结构,我不明白为什么enum这里不适用于枚举.这是真正的enum不映射到一个实际的类型一样int会为这样做Int32,但我认为它应该表现一样的struct约束.
我是否只是陷入了尚未完全实现的实验性特征陷阱,或者是否在规范中故意这样做(为什么?)?
我想用System.Net.WebSockets.NET 4.5及更高版本的新类(在Windows 8.1上)实现一个简单的聊天服务器.但是,我只找到在ASP.NET环境中使用这些类的示例(特别是这里的那些:http://www.codemag.com/Article/1210051)
我没有这样的,并且希望尽可能地将websocket服务器实现为"原始",但不必重新实现所有的websocket协议,因为Microsoft希望已经在.NET 4.5中实现了这一点.
我想简单地实例化一个新WebSocket类,就像我用普通法做的那样Socket,但构造函数是受保护的.所以我去创建一个继承自它的类,但后来我注意到我必须实现如此多的抽象方法和属性,看起来我正在重写整个逻辑(特别是因为我必须实现像Stateor 这样的东西SendAsync).
我担心MSDN文档没有帮助我.那里的文档有预发布状态,许多评论只是说"TBD"或"实施时".
BinaryReader/BinaryWriter可以通过指定Encoding使用for String-related操作来构造.NET 类.
我正在使用扩展方法实现自定义字符串格式,但是Encoding在实例化时它们会以尊重指定的方式实现它们BinaryReader/Writer.
似乎没有办法从读取器/写入器中检索编码,即使从类继承也没有.我只能通过重新创建所有构造函数来继承它们来拦截传递的编码.我查看了.NET源代码,它只用于实例化Decoder类(如果是BinaryReader),但我也无法访问它.
我在这些课程中是否会遇到缺点?我可以用反射入侵它们吗?
我正在尝试为VS2017(在C#中)创建扩展VSPackage,它将二进制数据转换为XML,在默认的VS XML编辑器和XML语言服务中打开它,然后在保存时将其转换回二进制.
但是,我有麻烦要确定这需要哪些步骤.在编辑器工厂中创建新编辑器时,我现在想到了以下内容:
现在我的尝试看起来像这样:
private MyPackage _package; // Filled via constructor
private IServiceProvider _serviceProvider; // Filled via SetSite
public int CreateEditorInstance(uint grfCreateDoc, string pszMkDocument, string pszPhysicalView,
IVsHierarchy pvHier, uint itemid, IntPtr punkDocDataExisting, out IntPtr ppunkDocView,
out IntPtr ppunkDocData, out string pbstrEditorCaption, out Guid pguidCmdUI, out int pgrfCDW)
{
// Initialize and validate parameters.
ppunkDocView = IntPtr.Zero;
ppunkDocData = IntPtr.Zero;
pbstrEditorCaption = String.Empty;
pguidCmdUI = Guid.Empty;
pgrfCDW = 0;
VSConstants.CEF createDocFlags = (VSConstants.CEF)grfCreateDoc;
if (!createDocFlags.HasFlag(VSConstants.CEF.OpenFile) && !createDocFlags.HasFlag(VSConstants.CEF.Silent)) …Run Code Online (Sandbox Code Playgroud) c# vsx visual-studio vs-extensibility visual-studio-extensions
我需要有关如何在python包中组织源代码的帮助-我已经在网络上关注了一些教程(尤其是本教程),但该方法并没有按照说明以及我的想象进行。
我想创建一个名为的python包binaryio。它应该提供两个类命名BinaryReader和BinaryWriter我希望用户能够与进口
from binaryio import BinaryReader
from binaryio import BinaryWriter
Run Code Online (Sandbox Code Playgroud)
因此,我创建了我的存储库和包目录结构,如下所示:
BinaryReader类)BinaryWriter类)setuptools.setup调用)如您所见,这些类位于我习惯的单独文件中(来自C#背景)。由于模块是Python中的“单元”,我不确定这是否是一个好主意-但对我来说,将所有类限制在一个大文件中似乎并不合逻辑。
__init__.py看起来如下导入这些类,从而(据我所知)from binaryio import BinaryReader以后可以为用户提供导入:
from binaryreader import BinaryReader
from binarywriter import BinaryWriter
Run Code Online (Sandbox Code Playgroud)
但是,当我在本地安装该软件包(似乎工作正常)并尝试到时import binaryio,出现以下错误:
>>> import binaryio
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Projects\Git\binaryio\binaryio\__init__.py", …Run Code Online (Sandbox Code Playgroud) .NET Standard 2.1 / .NET Core 3引入 System.HashCode了快速将字段和值组合为哈希码的功能,而无需关心底层实现。
但是,它仅提供Combine最多 8 个值的方法重载。如果我有一个包含 9 个值(3x3 矩阵)甚至 16 个值(4x4 矩阵)的类,我该怎么办?
我应该简单地将两个Combine调用相加,并在每个调用中传递尽可能多的值吗?
public override int GetHashCode()
=> HashCode.Combine(M11, M12, M13, M21, M22, M23, M31, M32) + HashCode.Combine(M33);
Run Code Online (Sandbox Code Playgroud)
看看来源,我不能完全争论这是否可能有我不知道的影响。
我打电话ConsumerIrManager.hasIrEmitter()给我的LG G2,但它总是回来false.
根据红外发射器的文档:
在包含红外(IR)发射器的设备上运行时,您现在可以使用
ConsumerIrManagerAPI 传输IR信号.要获取实例ConsumerIrManager,请将getSystemService()其CONSUMER_IR_SERVICE作为参数调用.然后,您可以getCarrierFrequencies()通过传递所需的频率和信号模式来查询设备支持的IR频率并发送信号transmit().您应该首先通过调用来检查设备是否包含IR发射器
hasIrEmitter(),但如果您的应用仅与具有一个设备的设备兼容,则应<uses-feature>在清单中包含"android.hardware.consumerir"(FEATURE_CONSUMER_IR)元素.
我的代码如下:
MainActivity.java
import android.hardware.ConsumerIrManager;
....
@Override
protected void onCreate(Bundle savedInstanceState) {
....
ConsumerIrManager mCIR = (ConsumerIrManager)getSystemService(CONSUMER_IR_SERVICE);
Log.e(TAG, "mCIR.hasIrEmitter(): " + mCIR.hasIrEmitter());
PackageManager pm = getPackageManager();
Log.e(TAG, "pm.hasSystemFeature(PackageManager.FEATURE_CONSUMER_IR): "
+ pm.hasSystemFeature(PackageManager.FEATURE_CONSUMER_IR));
FeatureInfo[] fi = pm.getSystemAvailableFeatures();
for (int i = 0; i < fi.length; i++) {
Log.e(TAG, "Feature: " + …Run Code Online (Sandbox Code Playgroud) 与VS2013相比,VS2015中文件顶部自动添加using(或ImportVB人员)指令的行为已发生变化.因此以下代码:
namespace CommanderKeen.Enemies
{
class Dopefish
{
}
}
namespace CommanderKeen
{
using System;
class GameLogic
{
public GameLogic()
{
// I reference the Dopefish class, being in another sub-namespace here,
// and want VS to automatically import this namespace.
Dopefish neverDies = new Dopefish();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在VS2013中,将在using System;指令后添加以下行:
using CommanderKeen.Enemies;
Run Code Online (Sandbox Code Playgroud)
例如,完全限定的命名空间.然而,VS2015将此缩短为:
using Enemies;
Run Code Online (Sandbox Code Playgroud)
...由于这种情况,我的using指令都放在命名空间内.但是,我从来没有看到这是常见的做法,即使using指令以这种(不常见的)方式存在.
我可以通过将我的using指令移到namespace范围之外来解决这个问题,但我真的不想这样做,因为我的整个项目现在都是这样组织的.
有没有人知道这是否可以修复,可能是通过附加组件?
我正在谷歌应用程序发明者中创建一个Android应用程序.每次创建应用程序时,应用程序创建者本身都会创建一个默认图标.我不知道如何更改此图标.
有人能告诉我如何更改在Google App Inventor中创建的Android应用程序的图标吗?
android android-emulator android-intent android-layout android-listview
我正在用 SharpDX 编写一个相机,并在四元数的帮助下旋转它。
我已经能够从四元数 s 获得俯仰、偏航和滚转。以下 C# 代码:
public static class QuaternionExtensions
{
public static Vector3 GetPitchYawRoll(this Quaternion q)
{
return new Vector3(q.GetPitch(), q.GetYaw(), q.GetRoll());
}
public static float GetPitch(this Quaternion q)
{
return q.GetK().GetPitch();
}
public static float GetYaw(this Quaternion q)
{
return q.GetK().GetYaw();
}
public static float GetRoll(this Quaternion q)
{
// This is M12 * M22 of rotation …Run Code Online (Sandbox Code Playgroud) c# ×5
.net ×2
android ×2
binaryreader ×1
binarywriter ×1
c#-7.3 ×1
camera ×1
enums ×1
generics ×1
gethashcode ×1
hashcode ×1
infrared ×1
python ×1
quaternions ×1
rotation ×1
sharpdx ×1
using ×1
vsx ×1
websocket ×1