We do it in continuoustests on github look in minimizer (sry at airport
boarding so vant link etc)
On 5 Feb 2015 14:53, "Reh Gina" <[email protected]> wrote:

> Now I am sure the generics are the bad ones. Does anybody know how to get
> the Type of a class with generic parameters?
>
> Am Donnerstag, 5. Februar 2015 11:41:00 UTC+1 schrieb Reh Gina:
>>
>> May this be a problem with generic types? I suppose this only occurs for
>> generic types because for generic types the reflector shows something like
>> this
>>
>> FTRACEDOMAIN_AEE2EE2A_67c3e758-a6a1-45eb-9e59-9ff194abcc53 
>> <http://127.0.0.1/roeder/dotnet/Default.aspx?Target=code://MeVis.Common.Utilities:3.0.0.0/MeVis.Common.Utilities.StatefulValue%3C,%3E/FTRACEDOMAIN_AEE2EE2A_67c3e758-a6a1-45eb-9e59-9ff194abcc53:syngo.Common.Diagnostics.Tracing.FTraceDomain>
>>  = new FTraceDomain 
>> <http://127.0.0.1/roeder/dotnet/Default.aspx?Target=code://syngo.Common:1.0.0.0:008145f79b9aec14/syngo.Common.Diagnostics.Tracing.FTraceDomain/.ctor(System.Type)>(typeof(StatefulValue
>>  
>> <http://127.0.0.1/roeder/dotnet/Default.aspx?Target=code://MeVis.Common.Utilities:3.0.0.0/MeVis.Common.Utilities.StatefulValue%3C,%3E><,>));
>>
>>
>> What returns typeof(somegenerictype<>) ???
>>
>>
>> Am Donnerstag, 5. Februar 2015 09:07:46 UTC+1 schrieb Reh Gina:
>>>
>>> That makes no sense. I simply inject the initialization of a static
>>> member into the static constructor. Looks like this afterwards (from
>>> reflector):
>>>
>>> static *VersionMessage 
>>> <http://127.0.0.1/roeder/dotnet/Default.aspx?Target=code://MeVis.MeVisLab.RemoteClient:3.0.0.0/MeVis.MeVisLab.RemoteClient.Messages.VersionMessage/.cctor()>*()
>>> {
>>>     FTRACEDOMAIN_AEE2EE2A_319e3e9d-6fab-4076-9a42-108dc52c976b 
>>> <http://127.0.0.1/roeder/dotnet/Default.aspx?Target=code://MeVis.MeVisLab.RemoteClient:3.0.0.0/MeVis.MeVisLab.RemoteClient.Messages.VersionMessage/FTRACEDOMAIN_AEE2EE2A_319e3e9d-6fab-4076-9a42-108dc52c976b:syngo.Common.Diagnostics.Tracing.FTraceDomain>
>>>  = new FTraceDomain 
>>> <http://127.0.0.1/roeder/dotnet/Default.aspx?Target=code://syngo.Common:1.0.0.0:008145f79b9aec14/syngo.Common.Diagnostics.Tracing.FTraceDomain/.ctor(System.Type)>(typeof(VersionMessage
>>>  
>>> <http://127.0.0.1/roeder/dotnet/Default.aspx?Target=code://MeVis.MeVisLab.RemoteClient:3.0.0.0/MeVis.MeVisLab.RemoteClient.Messages.VersionMessage>));
>>> }
>>>
>>>
>>>
>>> The code which injects above line:
>>>
>>>
>>>     /// <nn />
>>>     private static void 
>>> AddInitialisationOfFTraceDomainFieldToStaticConstructor(
>>>       ModuleDefinition module,
>>>       TypeDefinition type,
>>>       MethodDefinition staticConstructor)
>>>     {
>>>       staticConstructor.Body.SimplifyMacros();
>>>       Instruction firstInstruction = 
>>> staticConstructor.Body.Instructions.First();
>>>       ILProcessor ilProcessor = staticConstructor.Body.GetILProcessor();
>>>
>>>       Instruction loadClassTypeInstruction = 
>>> Instruction.Create(OpCodes.Ldtoken, type);
>>>       ilProcessor.InsertBefore(firstInstruction, loadClassTypeInstruction);
>>>
>>>       Instruction callGetTypeInstruction = Instruction.Create(OpCodes.Call,
>>>       module.Import(typeof(System.Type).GetMethod("GetTypeFromHandle")));
>>>       ilProcessor.InsertAfter(loadClassTypeInstruction, 
>>> callGetTypeInstruction);
>>>
>>>       var domainConstructor =
>>>         
>>> typeof(syngo.Common.Diagnostics.Tracing.FTraceDomain).GetConstructor(new[] 
>>> { typeof(Type) });
>>>       var domainConstructorReference = module.Import(domainConstructor);
>>>       Instruction domainConstructorInstruction = 
>>> Instruction.Create(OpCodes.Newobj, domainConstructorReference);
>>>       ilProcessor.InsertAfter(callGetTypeInstruction, 
>>> domainConstructorInstruction); // create new instance of person
>>>       Instruction popFTraceDomainVariableInstruction = 
>>> Instruction.Create(OpCodes.Stsfld, _fTraceDomainField);
>>>
>>>       ilProcessor.InsertAfter(domainConstructorInstruction, 
>>> popFTraceDomainVariableInstruction);
>>>
>>>       staticConstructor.Body.OptimizeMacros();
>>>     }
>>>
>>>
>>> Am Mittwoch, 4. Februar 2015 17:18:44 UTC+1 schrieb Jb Evain:
>>>>
>>>> I'll go out on a limb an suggest your field initializer is taking a
>>>> lot of memory? :)
>>>>
>>>> Can you show what you're injecting?
>>>>
>>>> On Wed, Feb 4, 2015 at 5:12 PM, Reh Gina <[email protected]> wrote:
>>>> > Via injection I am adding a static field into a static class which
>>>> already
>>>> > contains two static fields. Injection code checks if static
>>>> constructor is
>>>> > already available, otherwise it will create one. In this case the
>>>> static
>>>> > constructor is available and the initialization of the static field
>>>> is just
>>>> > added before the existing instructions. At run time an
>>>> OutOfMemoryException
>>>> > occurs if accessing the injected object.
>>>> > Does anybody has an Idea what can cause this exception?
>>>> >
>>>> > --
>>>> > --
>>>> > --
>>>> > mono-cecil
>>>> > ---
>>>> > You received this message because you are subscribed to the Google
>>>> Groups
>>>> > "mono-cecil" group.
>>>> > To unsubscribe from this group and stop receiving emails from it,
>>>> send an
>>>> > email to [email protected].
>>>> > For more options, visit https://groups.google.com/d/optout.
>>>>
>>>  --
> --
> --
> mono-cecil
> ---
> You received this message because you are subscribed to the Google Groups
> "mono-cecil" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
--
mono-cecil
--- 
You received this message because you are subscribed to the Google Groups 
"mono-cecil" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to