Git Product home page Git Product logo

flashreflection's Introduction

FlashReflection - .NET reflection in a flash

Travis build status AppVeyor build status

FlashReflection is a faster and easier way to use reflection in .NET. This library provides cache of types, properties, attributes and methods. It allows a much faster access to property values.

How to use:

var classAReflected = ReflectionCache.Instance.GetReflectionType<ClassA>();
var valueOfProperty = classAReflected.Properties["Name"].GetValue(objectOfClassA);

Cache options can be set globally by doing the following before any call to ReflectionCache.Instance

ReflectionCache.ReflectionCache = new MemoryCacheOptions();

When using ReflectionCache.Instance.GetReflectionType you can specify its cache entry options as well.

ReflectionCache.Instance.GetReflectionType<ClassA>(new MemoryCacheEntryOptions());

Benchmark

                        Method |          Mean |     Error |    StdDev | Scaled| ScaledSD |
------------------------------ |--------------:|----------:|----------:|------:|---------:|
                GetViaProperty |     0.0058 ns | 0.0091 ns | 0.0085 ns |      ?|        ? |
                GetViaDelegate |     1.8663 ns | 0.0119 ns | 0.0112 ns |      ?|        ? |
                  GetViaILEmit |     2.9481 ns | 0.0174 ns | 0.0154 ns |      ?|        ? |
 GetViaCompiledExpressionTrees |    11.2914 ns | 0.0271 ns | 0.0254 ns |      ?|        ? |
              GetViaFastMember |    33.8724 ns | 0.0973 ns | 0.0910 ns |      ?|        ? |
         GetViaFlashReflection |     6.4690 ns | 0.0160 ns | 0.0142 ns |      ?|        ? |
   GetViaReflectionWithCaching |   126.4189 ns | 0.2890 ns | 0.2703 ns |      ?|        ? |
              GetViaReflection |   192.1511 ns | 0.3489 ns | 0.3264 ns |      ?|        ? |
   GetViaDelegateDynamicInvoke |   954.5050 ns | 9.3122 ns | 8.7107 ns |      ?|        ? |
                SetViaProperty |     1.8824 ns | 0.0102 ns | 0.0091 ns |      ?|        ? |
                SetViaDelegate |     9.3983 ns | 0.0167 ns | 0.0157 ns |      ?|        ? |
                  SetViaILEmit |    10.3386 ns | 0.0643 ns | 0.0601 ns |      ?|        ? |
 SetViaCompiledExpressionTrees |     9.9524 ns | 0.0418 ns | 0.0391 ns |      ?|        ? |
              SetViaFastMember |    35.6829 ns | 0.1239 ns | 0.1159 ns |      ?|        ? |
         SetViaFlashReflection |     6.7196 ns | 0.0153 ns | 0.0136 ns |      ?|        ? |
   SetViaReflectionWithCaching |   205.2057 ns | 0.9305 ns | 0.8704 ns |      ?|        ? |
              SetViaReflection |   277.5734 ns | 1.9667 ns | 1.8396 ns |      ?|        ? |
   SetViaDelegateDynamicInvoke | 1,010.4607 ns | 8.6607 ns | 8.1012 ns |      ?|        ? |

flashreflection's People

Contributors

xaviergxf avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.