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
374 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Chat Room 1 43
install app on other machine 13 32
Access properties in nested observable collections 8 23
C# Json POSt to Rest API 4 32
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…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

930 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

9 Experts available now in Live!

Get 1:1 Help Now