Solved

Conditional compilation: I want to compile functions on the basis of knowing or not knowing the type of the parameter value (without using /d or /define). Like #ifdef __XYZ_H__ in C++...

Posted on 2004-04-05
5
373 Views
Last Modified: 2011-09-20
I'd like to build a class (Abc) that is shared between C# projects on source code basis. Some of these projects know a particular class (Xyz), some don't.
So when I make a function like Abc.DoSomething(Xyz xyz), it would result in a compile time error in the projects where Xyz is not known. How can I make source code that is only compiled when Xyz is known?
#define works only within the same source file and I'd like to avoid others to need more than including the source file of Abc to their project.

regards, Flea
(Don't beat me, if my English is too poor for you.)

P.S.: At least, there would be the possibility to make a #if ... #warning section...
0
Comment
Question by:Fleasoft
  • 2
  • 2
5 Comments
 
LVL 20

Accepted Solution

by:
TheAvenger earned 400 total points
ID: 10755423
In C# you can include #ifs only for terms defined with #define or in the properties of the project. You cannot check the existance of a type declaration. So I would put an #if in the code and I would define the term in the project properties (Project->Properties->Configuration Properties->Build->Conditional Compilation Constants - should be added for both debug and release configuration). Then in the projects you include the type, you will define the term. For the projects where you don't define the type, you will not define the term.
0
 

Author Comment

by:Fleasoft
ID: 10755653
Okay, the solution of TheAvenger (thanks for contribution) was still known to me but I've searched for an easier to apply solution (see the sentence beginning with #define), where the programmer sharing the code file to his/her project has little effort to do. So perhaps there's a way to automatically add the define to project properties?
0
 
LVL 20

Expert Comment

by:TheAvenger
ID: 10755660
I don't think so :-(( Unforutnately the preprocessor of C# is not so powerful as it is in C++....
0
 

Author Comment

by:Fleasoft
ID: 10755951
Unfortunately I'm afraid I'll have to agree you :-(( They should have been thought on something like that.
Thanks anyway...

regards, Flea
0
 
LVL 5

Expert Comment

by:AdrianJMartin
ID: 10756036
As TheAvenger points out all the developer has to do is add the def to the "Conditional Compilation Section" in the projects properties...... it difficult to see how much easier it could be...
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

Suggested Solutions

Article by: Najam
Having new technologies does not mean they will completely replace old components.  Recently I had to create WCF that will be called by VB6 component.  Here I will describe what steps one should follow while doing so, please feel free to post any qu…
This article describes a simple method to resize a control at runtime.  It includes ready-to-use source code and a complete sample demonstration application.  We'll also talk about C# Extension Methods. Introduction In one of my applications…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now