<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: How To Create Application Plug-ins In VB.NET</title>
	<atom:link href="http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/feed/" rel="self" type="application/rss+xml" />
	<link>http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/</link>
	<description>Articles on VB.NET and Software Development Team Leadership</description>
	<pubDate>Mon, 15 Mar 2010 23:42:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Samsonov</title>
		<link>http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/comment-page-1/#comment-1387</link>
		<dc:creator>Samsonov</dc:creator>
		<pubDate>Mon, 17 Aug 2009 10:17:23 +0000</pubDate>
		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/#comment-1387</guid>
		<description>Those techniques with GetType / GetInterface are "not CLS-compliant" (as VB help claims). There is a more easier and graceful way to do things — just to create objects by their class name, not by an abstract interface type. Of course, it assumes that the plugin is a class library, but I think that's the case in the majority of situations.

For example, plugin's code:

&lt;code&gt;Public Class MyPluginImplementation Inherits MyPluginBase
 .....{code must include constructor with no arguments}.....
End Class&lt;/code&gt;

And the application code:

&lt;code&gt;Dim oAssembly As Reflection.Assembly = Reflection.Assembly.LoadFrom(sFile)
Dim oInstance As MyPluginBase = DirectCast(oAssembly.CreateInstance("RootNamespace.Namespace.MyPluginImplementation"), MyPluginBase)
If Not IsNothing(oInstance) Then .....{do something}.....&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Those techniques with GetType / GetInterface are &#8220;not CLS-compliant&#8221; (as VB help claims). There is a more easier and graceful way to do things — just to create objects by their class name, not by an abstract interface type. Of course, it assumes that the plugin is a class library, but I think that&#8217;s the case in the majority of situations.</p>
<p>For example, plugin&#8217;s code:</p>
<p><code>Public Class MyPluginImplementation Inherits MyPluginBase<br />
 .....{code must include constructor with no arguments}.....<br />
End Class</code></p>
<p>And the application code:</p>
<p><code>Dim oAssembly As Reflection.Assembly = Reflection.Assembly.LoadFrom(sFile)<br />
Dim oInstance As MyPluginBase = DirectCast(oAssembly.CreateInstance("RootNamespace.Namespace.MyPluginImplementation"), MyPluginBase)<br />
If Not IsNothing(oInstance) Then .....{do something}.....</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: yousif</title>
		<link>http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/comment-page-1/#comment-1376</link>
		<dc:creator>yousif</dc:creator>
		<pubDate>Tue, 14 Jul 2009 16:53:42 +0000</pubDate>
		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/#comment-1376</guid>
		<description>thanks allot !!

i get the main idea

but the question is how do i know that the plug-in would not do any bad thing to my app ??</description>
		<content:encoded><![CDATA[<p>thanks allot !!</p>
<p>i get the main idea</p>
<p>but the question is how do i know that the plug-in would not do any bad thing to my app ??</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: leizel</title>
		<link>http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/comment-page-1/#comment-1302</link>
		<dc:creator>leizel</dc:creator>
		<pubDate>Thu, 22 Jan 2009 01:29:45 +0000</pubDate>
		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/#comment-1302</guid>
		<description>hi,
can you show me an example of program of for loop and if else for vb6.</description>
		<content:encoded><![CDATA[<p>hi,<br />
can you show me an example of program of for loop and if else for vb6.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jouke</title>
		<link>http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/comment-page-1/#comment-1196</link>
		<dc:creator>Jouke</dc:creator>
		<pubDate>Mon, 01 Sep 2008 09:29:11 +0000</pubDate>
		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/#comment-1196</guid>
		<description>Is it possible for the plugin to get info from the host?</description>
		<content:encoded><![CDATA[<p>Is it possible for the plugin to get info from the host?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike</title>
		<link>http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/comment-page-1/#comment-993</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Tue, 29 Jan 2008 19:28:52 +0000</pubDate>
		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/#comment-993</guid>
		<description>Doesn't the assembly remain loaded though? I'd like to be able to update the plug-in while my program is still running.
Can you not just reference a DLL and achieve the same effect?</description>
		<content:encoded><![CDATA[<p>Doesn&#8217;t the assembly remain loaded though? I&#8217;d like to be able to update the plug-in while my program is still running.<br />
Can you not just reference a DLL and achieve the same effect?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jfrankcarr</title>
		<link>http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/comment-page-1/#comment-854</link>
		<dc:creator>jfrankcarr</dc:creator>
		<pubDate>Mon, 05 Nov 2007 16:47:32 +0000</pubDate>
		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/#comment-854</guid>
		<description>Hi Karl,

Check out my new post: &lt;a href="http://vbnotebookfor.net/2007/11/05/application-plug-ins-code-example-update/" rel="nofollow"&gt;Application Plug-ins Code Example Update&lt;/a&gt;. Follow the instructions in that article and you should be good to go.</description>
		<content:encoded><![CDATA[<p>Hi Karl,</p>
<p>Check out my new post: <a href="http://vbnotebookfor.net/2007/11/05/application-plug-ins-code-example-update/" rel="nofollow">Application Plug-ins Code Example Update</a>. Follow the instructions in that article and you should be good to go.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Karl Stoney</title>
		<link>http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/comment-page-1/#comment-852</link>
		<dc:creator>Karl Stoney</dc:creator>
		<pubDate>Mon, 05 Nov 2007 12:31:34 +0000</pubDate>
		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/#comment-852</guid>
		<description>Hi, 
This is really great i've been searching for somthing like this for ages, but i'm still having difficulty grasping reflection, would you send me an example project + plugin ?  I would really appreciate it.

Karl.</description>
		<content:encoded><![CDATA[<p>Hi,<br />
This is really great i&#8217;ve been searching for somthing like this for ages, but i&#8217;m still having difficulty grasping reflection, would you send me an example project + plugin ?  I would really appreciate it.</p>
<p>Karl.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jfrankcarr</title>
		<link>http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/comment-page-1/#comment-736</link>
		<dc:creator>jfrankcarr</dc:creator>
		<pubDate>Wed, 10 Oct 2007 18:56:40 +0000</pubDate>
		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/#comment-736</guid>
		<description>Yes, it will work for web apps. You do have to be more mindful of the performance hit though. It can be particularly effective for background processes called from a web interface or through a web service. This can allow you to add additional services for specific customers easily.

As for keeping up with the DLLs I store the location of a client's specific DLL in their account record in the DB.</description>
		<content:encoded><![CDATA[<p>Yes, it will work for web apps. You do have to be more mindful of the performance hit though. It can be particularly effective for background processes called from a web interface or through a web service. This can allow you to add additional services for specific customers easily.</p>
<p>As for keeping up with the DLLs I store the location of a client&#8217;s specific DLL in their account record in the DB.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: MikeP</title>
		<link>http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/comment-page-1/#comment-735</link>
		<dc:creator>MikeP</dc:creator>
		<pubDate>Wed, 10 Oct 2007 16:22:18 +0000</pubDate>
		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/#comment-735</guid>
		<description>Will this work for web apps too? 

How do you keep up with which DLL you need to load in a situation?</description>
		<content:encoded><![CDATA[<p>Will this work for web apps too? </p>
<p>How do you keep up with which DLL you need to load in a situation?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
