Giter Site home page Giter Site logo

kouweizhong / typepipe Goto Github PK

View Code? Open in Web Editor NEW

This project forked from re-motion/typepipe

0.0 1.0 0.0 5.32 MB

TypePipe allows you to modify existing CLR types using a simple, expression-based API. Modifications from several tools and libraries (AOP, IoC etc.) can be combined. Types are generated via Reflection.Emit or user-defined back-ends.

Home Page: https://www.re-motion.org

C# 99.88% Batchfile 0.07% PowerShell 0.05%
pipeline

typepipe's Introduction

Project Description

TypePipe allows you to modify existing CLR types using a simple, expression-based API. Modifications from several tools and libraries (AOP, IoC etc.) can be combined. Types are generated via Reflection.Emit or user-defined back-ends.

Overview

Motivation

Many .NET tools, libraries, and frameworks implement some kind of metaprogramming in order to modify existing types or create new types based on existing ones. These tools use different techniques to do their job, typically creating two different problems:

  • they often don't play well with each other
  • they don't let the user choose the generation technique best suited to their projects Read more about these problems here.

Solution

The TypePipe project aims to provide a unified pipeline that allows these tools (and even applications developed using the tools) to collaborate in the code generation process. The TypePipe engine provides an abstract model representing the emitted code, and supports caching, verification, and similar services. This was inspired by the extensible compilation process of the BOO programming language.

TypePipe initially provides type generation by creating subclass proxies via Reflection.Emit to provide maximum flexibility. An alternative implementation using IL rewriting might be added later (probably using Mono.Cecil). Generation techniques can also be provided through TypePipe's extensibility model.

Read more on the Documentation page.

typepipe's People

Contributors

michaelketting avatar fschmied avatar drauch avatar stefan-wenig avatar

Watchers

James Cloos 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.