我有4个dll.但是我希望有一个单独的dll,它将包含来自所有这四个dll的代码.我尝试添加一个项目并将所有现有代码粘贴到一个项目中,但我不能.
我有一个问题涉及使用在运行时已知的类型参数调用类的泛型方法.
具体来说,代码如下所示:
FieldInfo[] dataFields = this.GetType().GetFields( BindingFlags.Public | BindingFlags.Instance );
// data is just a byte array used internally in DataStream
DataStream ds = new DataStream( data );
foreach ( FieldInfo field in dataFields )
{
Type fieldType = field.FieldType;
// I want to call this method and pass in the type parameter specified by the field's type
object objData = ( object ) ds.Read<fieldType>();
}
Run Code Online (Sandbox Code Playgroud)
Read()函数如下所示:
public T Read() where T : struct
Run Code Online (Sandbox Code Playgroud)
该函数的目的是返回从字节数组中读取的数据.
有没有办法在运行时调用泛型方法?
我最近一直在玩新的Async CTP,我遇到过一种我不确定如何继续的情况.
在我目前的代码库中,我使用的是"作业"和"作业管理器"的概念.作业仅用于处理初始消息,发送响应,然后等待响应.
我已经有了基于同步套接字的现有代码,其中网络线程正在等待数据到达,然后将其传递给事件处理程序,最终传递给作业管理器.
作业管理器查找将处理消息的作业,并将其传递.
所以场景是这样的:
这是一个伪代码示例:
class MyJob : Job
{
public override void RunJob( IPacketMsg packet )
{
// handle packet
var myReply = new Packet();
SendReply( myReply );
await GetResponse();
}
}
Run Code Online (Sandbox Code Playgroud)
但我不完全确定如何在第3步继续.工作经理将获得响应,然后将其交给正在运行的工作.但我不知道如何让工作等待回应.
我考虑过创建一个等待在WaitHandle上阻塞的任务,但这是最好的解决方案吗?
在这种情况下我还能做些什么吗?
编辑 关于Async CTP的主题,在未使用UI的情况下会发生什么.我已经阅读了Eric Lippert的Async博客,但我不相信它曾经触及过如何在没有UI线程的情况下在后台工作的主题(它是关闭背景工作者还是......?)
我最近遇到过一种情况,我需要创建一个通用方法来从字节数组中读取数据类型.
我创建了以下类:
public class DataStream
{
public int Offset { get; set; }
public byte[] Data { get; set; }
public T Read<T>() where T : struct
{
unsafe
{
int dataLen = Marshal.SizeOf( typeof( T ) );
IntPtr dataBlock = Marshal.AllocHGlobal( dataLen );
Marshal.Copy( Data, Offset, dataBlock, dataLen );
T type = *( ( T* )dataBlock.ToPointer() );
Marshal.FreeHGlobal( dataBlock );
Offset += dataLen;
return type;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,除了解除分配问题,此代码不会使用此消息进行编译:
Cannot take the address of, get the size of, or …
我有一个现有的数据库,我有四个相同和无关的表.
我想使用相同的POCO类来描述所有四个,而不必创建相同类的重复项.
这是我的上下文到目前为止的样子:
class StatsContext : DbContext
{
// [MagicTableAttribute( "map_ratings_vsh" )] -- does something like this exist?
public DbSet<MapRatings> MapRatingsVSH { get; set; }
public DbSet<MapRatings> MapRatingsJump { get; set; }
// 2 more tables using same class
}
class MapRatings
{
public string SteamID { get; set; }
public string Map { get; set; }
public int Rating { get; set; }
[Column( "rated" )]
public DateTime Time { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是现有的表名为"map_ratings_vsh"和"map_ratings_jump",我不能使用数据注释,TableAttribute因为它只能在类上使用.
有没有其他方式 - …
我正在尝试将一些旧的MSVC C++代码移植到MinGW/GCC.
一个问题是项目在很大程度上依赖于/ DELAYLOAD选项来查找并不总是使用的函数,以及正确的dll在运行时的位置.
MinGW/GCC有类似的选择吗?
此代码针对的是Windows平台.
我的标题问题有点模糊,因为很难问,但我的情况是这样的:
我有一个int数组,它们是一个单独的对象集合的索引.
该数组如下所示:
int[] indices = { 0, 2, 4, 9, 10, 11, 13, /* more (non-)sequential indices */ };
Run Code Online (Sandbox Code Playgroud)
这些索引中的每一个都对应于我拥有的集合中该索引处的对象.
我希望能够使用我的数组中的索引构建这些对象的新集合.
我如何使用一些LINQ函数?
c# ×6
arrays ×1
async-await ×1
async-ctp ×1
c++ ×1
collections ×1
dll ×1
dynamic ×1
gcc ×1
generics ×1
linq ×1
marshalling ×1
mingw ×1
reflection ×1
runtime ×1
unsafe ×1
visual-c++ ×1