Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 383
  • Last Modified:

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++...

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
Fleasoft
Asked:
Fleasoft
  • 2
  • 2
1 Solution
 
TheAvengerCommented:
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
 
FleasoftAuthor Commented:
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
 
TheAvengerCommented:
I don't think so :-(( Unforutnately the preprocessor of C# is not so powerful as it is in C++....
0
 
FleasoftAuthor Commented:
Unfortunately I'm afraid I'll have to agree you :-(( They should have been thought on something like that.
Thanks anyway...

regards, Flea
0
 
AdrianJMartinCommented:
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

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now