JamesEggers

Stories submitted by JamesEggers

Development Achievements(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 2 months ago

A look into possibly using an Achievement system as a way to increase motivation and recognition of developers. read more...

add a comment |category: |Views: 10

tags: another

Making Part Declarations Easier with InheritedExports(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 4 months ago

A look at the lesser documented feature of the Managed Extensibility Framework - the InheritedExport attribute. read more...

add a comment |category: |Views: 6

tags: another

A Configurable Type Catalog for MEF(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 4 months ago

A post that looks at what extending the TypeCatalog that comes with the Managed Extensibility Framework to provide provider-model like functionality. read more...

add a comment |category: |Views: 75

tags: another

Random Acts of Coding: Using MEF and Custom Configuration Sections(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 5 months ago

In this post, we'll look at how to utilize a custom configuration section defined in an assembly used as a MEF part and not located in the same directory as the executable. Using this method, it will allow even greater power to your application and freedom to the parts consumed by such. read more...

add a comment |category: |Views: 29

tags: another

Managing Composition Through Lazy Loading Parts(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 5 months ago

So far in this post series, we've been looking at various aspects of working with MEF in the context of a single level of composition. One interesting thing about MEF is that its composition is recursive based on the assemblies and types identified in the catalogs within the container. What this means is that if one of our parts also has imports defined for parts of its own, the composition container will continue loading parts for the initial type as well as all parts loaded until no more parts are found or all imports are fulfilled. This is a really nice feature since it will ensure everything is ready for you once compose the initial type; however, this eager loading can greatly cause a performance issue if the parts are not constructed properly. In this post on our ongoing series about MEF, we'll look into the concept of parts of parts and how to apply lazy loading principles towards them. read more...

add a comment |category: |Views: 15

tags: another

Looking Around at Circular References in MEF (randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 6 months ago

In the last post of this series, we created a new example code base used to display help text for various "commands". This was a simple code base that extended previous examples by using external assemblies and different catalogs to identify all of the parts that can be imported and mapped. This example covers a lot of scenarios when applied beyond the means of console-based text output since each imported "command" could literally be a functional piece of code by itself. However, what happens when the imports require something from our main application? When one object has a dependency with another object of another type; only for the dependent have a dependency towards the initial type; this is called a circular dependency. In this post, we're going to look at the condition of a circular dependency and see how MEF encounters such issues. read more...

add a comment |category: |Views: 24

tags: another

Random Acts of Coding: Playing Nice with Other Assemblies using MEF Ca(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 6 months ago

Looking over the previous three posts, we have been working within a single assembly for managing our extensibility parts. While this works well if we want to use MEF more as an IoC container, it really limits the extensibility of our application. In the single assembly model that we've been using, every update would require a new build of the application. To overcome this limitation, we'll create a new example project that builds on what we've covered and branch it out into multiple assemblies. read more...

add a comment |category: |Views: 5

tags: another

LINQing to MEF Imports(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 6 months ago

At the end of the last post, we looked at how we can explicitly manage our imports and exports using a combination of text-based labels and type declarations. In addition, we began to look at the ImportMany() attribute for importing more than one value in our extensible application. Along with the ImportMany(), we looked at looping through the simple example to display the property of each imported type. This approach isn't bad if the number of imported types are small; however, looping really wouldn't work well if your application loaded a very large amount of applications. In a way, it's a great problem to have if your application has a large community based plug-in repository (i.e. Wordpress or Firefox). There may come a time when we may need to find a specific plug-in without looping through everything. In order to determine this, there's a couple different ways to handling this. In this post, we're going to explore a non-MEF way of handling it using LINQ. In a future post, we'll look at how we can expand upon this using some of the constructs that MEF provides. read more...

add a comment |category: |Views: 10

tags: another

Random Acts of Coding: A Deeper Look at MEF's Imports and Exports(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 6 months ago

In the last article, I provided a very brief introduction to MEF and showed a very simple console application. In this section, we'll be looking at the issues associated with that sample and diving into the various aspects of declaring your Imports and Exports to overcome those issues. The code and samples in this post will still be within a single assembly. Because of this, I'll may use the word Dependencies and Parts interchangeably. read more...

add a comment |category: |Views: 7

tags: another

Random Acts of Coding: An Introduction to MEF(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 6 months ago

Have you ever attempted to write an extensible application? You know the kind. The applications where your boss wants to be able to add stuff to it without rewriting the entire application and with minimum costs. Or the type of application you want to release out to the community and provide a way for them to add their own customizations to it. We have all seen these types of applications; however, if you have ever attempted to write such, it is usually a pain to developer the core application or a pain to develop the extensions or plug-ins. Thankfully the Managed Extensibility Framework (MEF) is available to those of us that have extensibility needs inside of the application. read more...

add a comment |category: |Views: 3

tags: another

Reviewing UppercuT - A Build Framework Based On NAnt(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 6 months ago

A review/opinion of UppercuT, a Build Framework based on NAnt developed by Rob Reynolds. read more...

add a comment |category: |Views: 8

tags: another

Is Learning Through a UI Worth It?(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 7 months ago

When learning some form or back-end component, is it worth while to spend time applying the product to a UI? read more...

add a comment |category: |Views: 3

tags: another

My Barriers to Learning TDD(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 8 months ago

As a follow up to my previous post declaring that I finally "get" TDD to some extent, I figured I'd reflect on the barriers that I have had up to this point which made it difficult for me to learn how to unit test in some effective manner as well as truly understanding the benefits of TDD practices. Now, I am by no means claiming to be an expert in unit testing, mocking, or TDD. I didn't open the refrigerator, drink some of the TDD-flavored Kool-Aid, and threw on a subsequent Mortarboard to illustrate that I've somehow graduated into this new, higher level of software development. I'm still learning from others as well as my own errors experiences just like everyone else. The purpose of this is to reveal to others some of the issues that I had and hopefully provide some insight on how to overcome such. read more...

add a comment |category: |Views: 11

tags: another

Finally Understanding the Merits of TDD(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 9 months ago

I'm not a TDD person...or at least I wasn't until last week. Up until then, I had read the blogs and looked at the examples to try to understand TDD and unit testing (with mocking) in general. Almost all of the examples I was shown demonstrated very basic scenarios that, in most cases, were too trivial to show value. I would ask people who would speak about unit testing in general how you'd do a specific scenario and would get mix responses ranging from "just try it" to "you should be using this tool and it'll just write the tests for you". read more...

add a comment |category: |Views: 519

tags: another

ParseWiki.js - A JavaScript Wiki Parsing Engine(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 9 months ago

An introduction to the start of a client-side wiki-parsing engine that uses regular expressiosn. read more...

add a comment |category: |Views: 46

tags: another

Writing a Custom NAnt Tas (Part 4)(randomactsofcoding.blogspot.com)

submitted by JamesEggersJamesEggers(1250) 2 years, 9 months ago

In the final segment in my series about creating a custom NAnt task, we dive into how to create a custom task used to execute an external application. read more...

add a comment |category: |Views: 17

tags: another