| | Submitted on: 11/16/2003 9:47:26 AM
By: H-PROG
Level: Intermediate User Rating: Unrated Compatibility:C#, VB.NET
Users have accessed this article 438 times. |
|
| | The article discusses how to use Reflection namespace to call methods in third party dlls using attributes. This article has accompanying files | |
|
|
Terms of Agreement:
By using this article, you agree to the following terms...
1) You may use
this article in your own programs (and may compile it into a program and distribute it in compiled format for languages that allow it) freely and with no charge.
2) You MAY NOT redistribute this article (for example to a web site) without written permission from the original author. Failure to do so is a violation of copyright laws.
3) You may link to this article from another website, but ONLY if it is not wrapped in a frame.
4) You will abide by any additional copyright restrictions which the author may have placed in the article or article's description. | Sometimes we need to add plug-ins to our applications.
This can be done using many techniques for example, one can define a directory where classical Dll files with pre-defined functions, the application can load these Dll's while start up.
Another more advanced technique is to build a COM object with a pre-defined interface. The COM CLSID can be saved in the registry under the Application registry-key so that the application can load these COMs while starting up using there CLSID. This is very similar to the technique used to add a toolbar for Internet Explorer.
New .Net technology offers another more flexible techniques. Using the magical Reflection namespace.
The idea is very simple. The Plug-Ins developer simply tags the method that should be called from the main application using an attribute.
The main application should only specify attribute name of the plug-in. In our example we created an arttribute called PlugInAttribute.
[AttributeUsage(AttributeTargets.Method)]
public class PlugInAttribute :
System.Attribute
{
public PlugInAttribute() {
// TODO: Add constructor logic here
}
}
The Plug-In developer should mark the function that should be called using PlugInAttribute attribute
[PlugInAttribute]
public void MyPlugIn () {
MessageBox.Show("PlugIn is called","Information");
}
The main application scans the Dlls as shown in ValidatePlugIn function in Main.cs. The main application loads the assembly using
Assembly.LoadFile(FilePath)
and start digging into the assembly searching for a method with a custom attribute called PlugInAttribute.
Invoking the a plug-in is very easy. It involves only two steps in the AssemblyClass
1- Load the class object from the asssembly
Object Obj = bag.mASM.CreateInstance (bag.mType.ToString() );
2- Invoke the method
bag.Methd.Invoke(Obj ,null);
| |
Download article
Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. Afterdownloading it, you will need a program like Winzip to decompress it.
Virus note:All files are scanned once-a-day by Planet Source Code for viruses,but new viruses come out every day, so no prevention program can catch 100% of them.
FOR YOUR OWN SAFETY, PLEASE: 1)Re-scan downloaded files using your personal virus checker before using it. 2)NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.
If you don't have a virus scanner, you can get one at many places on the net including:McAfee.com
|
Terms of Agreement:
By using this article, you agree to the following terms...
1) You may use
this article in your own programs (and may compile it into a program and distribute it in compiled format for languages that allow it) freely and with no charge.
2) You MAY NOT redistribute this article (for example to a web site) without written permission from the original author. Failure to do so is a violation of copyright laws.
3) You may link to this article from another website, but ONLY if it is not wrapped in a frame.
4) You will abide by any additional copyright restrictions which the author may have placed in the article or article's description. |
|
Report Bad Submission |
|
|
Your Vote! |
See Voting Log |
|
Other User Comments |
11/17/2003 7:09:32 AM: thank you very much man ;)
But can i
have a VB .Net ver please ??????
|
11/17/2003 2:10:42 PM:H-PROG The VB.Net version should be the same.
You only have to change the attribute
notations from [] to <>
|
|
Add Your Feedback! |
Note:Not only will your feedback be posted, but an email will be sent to the code's author in your name.
NOTICE: The author of this article has been kind enough to share it with you. If you have a criticism, please state it politely or it will be deleted.
For feedback not related to this particular article, please click here. |
|