|
I see no subclasses. SubTest does not extend Test , i.e. you must code it as SubText : Test .
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
thats what happens when you don't copy and paste
In my actual code Subtest extends test
so:
public class SubTest:Test
{
public string something;
}
Thanks!
|
|
|
|
|
When you create your XmlSerializer instance, make sure you create it using either your instance of SubTest or the type of SubTest (using typeof(SubTest) ). The following sample works just fine:
using System;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
public class Test
{
static void Main()
{
SubTest test = new SubTest();
XmlTextWriter writer = new XmlTextWriter("Test.xml", Encoding.UTF8);
XmlSerializer serializer = new XmlSerializer(typeof(SubTest));
serializer.Serialize(writer, test);
}
[XmlAttribute]
public int Attr
{
get { return 1; }
set { ; }
}
}
public class SubTest : Test
{
public string Something = "Test";
}
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Thanks!
I was actually trying to do this as part of creating a webservice, and apologies for not making this more specific.
I have a webmethod which looks something like:
MyWebMethod(SubTest sub){
somestuff;
}
When I create the webservice and look at the soap message that would be sent, I don't see the attribute there (i.e. the string looks like <sub> string </sub> instead of <sub att=int> string </sub>. I guess the default xmlserializer does not pick the derived attribute. Is there anyway of informing the serializer in the context of writing a webservice?
Thanks!
|
|
|
|
|
I'm new to C#, just started building my first few applications. I wanted to build a really simple program for manipulating my cd/dvd drive. I want to have a Play, a stop, and an eject button.
I was thinking of followign this tutorial CD Player library using MCI
Unfortunately, I've run into my first problem. I can't seem to find DeviceController.dll. I'm using the free C# IDE by Borland, and on my listing of references, this doesn't appear. A friend suggest that I make sure I have the Platform SDK installed, but after installing that and rebotting, the .dll still was not available.
Is there a newer .dll or another way of doing this in high level? Or am I stuck until I find this .dll?
|
|
|
|
|
DeviceController.dll is already compiled in the Demo Application ZIP file, and you can compile it from the source. Both links are at the top of the article (typical for articles on CodeProject). Extract that DLL to some directory on your hard drive and add a reference to that DLL (assembly) to your project. Just click the Browse button and browse to the directory where you extracted it.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
You didn't download the source files for that article, did you? You'll find the DeviceController.dll that you're looking for in the source files .Zip file. It's not a standard .DLL you'll find on any Windows machine. It was custom written by the author of the article.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Oh. I didn't download it because I thought it was a standard DLL. I didn't realize it was custom written. I downloaded it and browsed through it, but wanted to do this on my own from scratch. I guess I'll have to develop my own dll too. Thanks.
|
|
|
|
|
The source for the .DLL is in there too if you want to take a look to see how it's done...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Sweet. My goal was to do this on my own though. I've looked at the MCI Interface at MSDN. It's a little above my level, but they show how to set up a wave file for playback. Maybe I'll start with that. Then look over the .dll source and see if how that works.
|
|
|
|
|
I want to format a string with embedded backslashes. The string that I want is as follows:
This is John I\. Smith.
Here's the code snippet:
string temp1 = "John I\\. Smith";
string temp2 = String.Format("This is {0}.", temp);
What I get in temp2 is:
This is John I\\. Smith.
instead of
This is John I\. Smith.
How do I get rid of the extra backslash?
BRCKCC
|
|
|
|
|
BrcKcc wrote:
This is John I\\. Smith.
Is that in the debugger, or in actual application output??
One easy way to be sure is to use
string myString = @"Use\a\slash\only\once";
the @ symbol in front of the string literal tells the compiler not to interpret the slashes as escape sequences. If you do want to include an escape sequence this won't work for you.
Cheers,
Andy.
|
|
|
|
|
It was in the debugger. It turns out when I displayed the string via MessageBox.Show(), it only had one backslash. So thanks for that clarification. The @ symbol has been confusing. How do I convert a string defined with the @ symbol to a string without the @ symbol? Do you know where Microsoft documented this capability?
Thanks.
- Bruce
BRCKCC
|
|
|
|
|
BrcKcc wrote:
How do I convert a string defined with the @ symbol to a string without the @ symbol?
What do you mean? They are all the same thing: a string object.
string a = "String\\Literal";
string b = @"String\Literal";
a==b
[EDIT - sorry, I had the slashes the wrong way round before]
Cheers,
Andy
|
|
|
|
|
Hi,
I have a web application and a windows service written in C# and I want to share the config file between the two. At the moment it looks like I would have to copy them each time I make an update. I would rather not do this.
Any ideas of how I may achieve this?
Cheers,
Andy.
|
|
|
|
|
AFAIK, you will have to do this. Unless, of course, you launch both the WebService and your Windows app out of the same directory (not likely...)
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
That wouldn't work, either. ASP.NET uses Web.config and applications (using the loader information in the PE/COFF executable that mscoree.dll uses) use <appname>.exe.config.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Smack! That's right! Ouch... Now I need some Advil.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I've found an attribute on appSettings called file which can point to another file and I was hoping to use that as an alternative, but I can't seem to get that to work either. I just don't see where I am going wrong.
In the web.config I've got:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings file="general.config"/>
...
</configuration> And in the general.config I've got
<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
<add key="encryption_level" value="2"/>
<add key="timer_interval" value="60" />
</appSettings>
But, in my tester application which just writes out the app settings it returns no information. If the appSettings section is copied into the web.config file it works as expected.
|
|
|
|
|
Try using an absolute path rather than a relative path. e.g.
<br />
<appSettings file="C:\inetpub\wwwroot\MyWebApp\general.config"/><br />
Does this help?
"You can have everything in life you want if you will just help enough other people get what they want." --Zig Ziglar
The Second EuroCPian Event will be in Brussels on the 4th of September
Can't manage to P/Invoke that Win32 API in .NET? Why not do interop the wiki way!
|
|
|
|
|
As Dave said, that really isn't possible.
There is one way, though it's a pretty big hack and won't really solve your problem. You can create a launcher with it's own config file that specifies the path of the executable (optional) and the path to the .config file. This launcher is executable as normal but then grabs the path to your current Windows Service executable (or hard-code it, though I recommend against that), sets up a second AppDomain (see AppDomain.CreateDomain ) and sets the AppDomain.SetupInformation.ConfigurationFile using the path you configured.
This isn't recommended, though. Those .config files are separate for security reasons and because a true application boundary exists (they're obviously both separate executables). Also, A Windows Service and an ASP.NET web application really share very little of the .config in common, such as the appSettings and assemblyBinding (as well as other runtime sections).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Hmmmm... That solution is... ummmm... interesting.
Heath Stewart wrote:
A Windows Service and an ASP.NET web application really share very little of the .config in common
I realise that the Web.cofig file contains many settings that the Service won't need and vice versa, but there is a lot of commonality. The database connection strings, the directory paths for the data files, timeout settings and so on. In total there are about 40 settings that are shared between the web application, the service and some unix processes. Things like the database connection strings are actually split up into parts because of the different technologies.
|
|
|
|
|
Interesting or not, it's fact. The worker process for ASP.NET sets up the AppDomain to use Web.config. The loader information in the PE/COFF executable bootstraps mscoree.dll, which uses the executable filename + .config.
You might consider writing a custom configuration section (see IConfigurationSectionHandler ) using something as simple as XML Serialization to get an object. You could also reference a common filename in your config section where your handler gets that file and then deserializes that (since a .config file is nothing more than XML) or parse the DOM yourself.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Heath Stewart wrote:
Interesting or not, it's fact.
I realise that. I meant that it was "interesting" in a "I really don't want to be implementing major hacks" kind of way.
What about the <appsettings file="some_other.config">? I'm stumpt at why that doesn't work either. Any ideas?
If not it looks like I'm either going to have to code around it, or duplicate the settings.
Cheers,
Andy
|
|
|
|
|
I already answered your question, unless you're talking about a different one. ASP.NET and Windows Forms applications (or even console applications - anything that is self-executable) use a different way to refer to their .config files. As I mentioned, though, just make your own IConfigurationSectionHandler implementation and implement it in such a way that it can pull "global" settings from a file or some other backing store.
Microsoft MVP, Visual C#
My Articles
|
|
|
|