|
You may get a better chance of help in the ASP.NET forum.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
Hey guys,
Long story short:
I have a number of classes that are structured like this:
class ClassA
{
[WantToCopy]
public Property1 { get; set; }
public Property2 { get; set; }
}
class ClassB : ClassA
{
public Property1 { get; set; }
public Property2 { get; set; }
}
class ClassC
{
public ClassB { get; set; }
public Property1 { get; set; }
public Property2 { get; set; }
}
I am trying copy the ClassA values (marked with a specific attribute) from an instance of ClassB to a new instance of ClassA.
This is what I am doing:
T resp = GetClassC();
var types = resp.GetType().GetProperties();
foreach (var type in types)
{
if(type.PropertyType.IsSubclassOf(this.GetType()))
{
List<PropertyInfo> fields = GetFields(type.PropertyType);
foreach (var field in fields)
{
var value = field.GetValue(resp , null);
field.SetValue(this, value , null);
}
}
}
The problem is I get a TargetException when I try and get a ClassA value from a ClassC instance (which makes sense).
ClassC is a generic type. I don't know anything about the ClassB member.
Does anyone have any tricks that could help me out here? Or will I have to use an interface?
P.S I am keen to keep this code to <= .NET 3.5 if possible.
Thank you,
Mark
Mark Brock
"We're definitely not going to make a G or a PG version of this. It's not PillowfightCraft." -- Chris Metzen
|
|
|
|
|
You're trying to read the value of a property defined in ClassA from an instance of ClassC , which doesn't inherit from ClassA .
Try something like this instead:
Type myType = this.GetType();
List<PropertyInfo> propertiesToCopy = GetFields(myType);
foreach (PropertyInfo property in resp.GetType().GetProperties())
{
if (property.PropertyType.IsSubclassOf(myType) || property.PropertyType == myType)
{
var propertyValue = property.GetValue(resp, null);
if (propertyValue == null) continue;
foreach (PropertyInfo propertyToCopy in propertiesToCopy)
{
var value = propertyToCopy.GetValue(propertyValue, null);
propertyToCopy.SetValue(this, value, null);
}
}
}
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Thanks Richard that looks like it will do what I am trying to achieve, cheers mate!
Mark Brock
I'm pretty sure there's a lot more to life than being really, really, ridiculously good looking
|
|
|
|
|
As you seem to have access to the code, why not add a copy constructor or Clone method to ClassA?
|
|
|
|
|
Thanks for your response. That is a good suggestion, but in this particular case I am trying to avoid using that approach.
Much appreciated anyway
Mark Brock
I'm pretty sure there's a lot more to life than being really, really, ridiculously good looking
|
|
|
|
|
hi.i want make a report that have 60 filed.and its very hard to me for make report in crystal report in one page,please help me to make several pages in crystal report.
|
|
|
|
|
You can add page breaks in the design interface in CR (spit)
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
How can i transfer files from a specified location to my server using FTP.
|
|
|
|
|
Look at the MSDN Sample below:
[^]
|
|
|
|
|
I want to move all the files in the given directory path to server Using FTP.
|
|
|
|
|
Is this a C# question? If not then you just need to use the FTP commands to send the files. If you are trying to transfer through some code then you should take a look at the FtpWebRequest Class[^].
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
I see voting still hasn't been restored, so here's a for the post.
"I've seen more information on a frickin' sticky note!" - Dave Kreskowiak
|
|
|
|
|
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
Maybe you have to use a foreach loop and different threads to upload the stuff...
foreach(string file in Directory.GetFiles("C:\Temp\FtpUpload"))
{
FTPClass.UploadFile(file);
}
|
|
|
|
|
I have developed master-detail relationship in two grids, but i want in one grid. Is it possible or not in windows Application?
|
|
|
|
|
Mis$Fit wrote: Is it possible or not in windows Application?
It's possible.
------------------------------
Author of Primary ROleplaying SysTem
How do I take my coffee? Black as midnight on a moonless night.
War doesn't determine who's right. War determines who's left.
|
|
|
|
|
|
You'll either have to use a 3rd party grid control that supports it or develop you're own (not easy!). The DatGridView doesn't support it.
|
|
|
|
|
As I recall you can have drill-down functionality in a DataGridView, but I haven't tried that since 2005.
You probably don't want any grids at all. Grids are horrible.
If you are just presenting readonly data I recommend a TreeView for hierarchical data.
What is it you are trying to do?
|
|
|
|
|
I'm sure I saw there was a documentation regarding to enum usage.
I'm creating a game children that would involve a person that have enums of face, body, legs, feet, arms, hands. Each of those parts have unique values (i.e. face would have values of "round", "square", "oval").
I'm not quite sure on how to put those enums into "person" object.
Can anyone point out the documentation? Thanks!
(or should I use struct? or the other way?)
modified 16-Dec-12 22:23pm.
|
|
|
|
|
Something along the lines of:
public enum FaceType { Round , ... }
public enum FootType { Hairy , ... }
public class Person
{
public FaceType Face { get ; private set ; }
public FootType LeftFoot { get ; private set ; }
public FootType RightFoot { get ; private set ; }
...
}
might work, but I'm unsure it would be best -- for one thing adding new attributes, like new face types, might be more difficult than necessary.
You might consider have a config file or a database to store the types and values.
|
|
|
|
|
ahh I'll give that a shot! thanks!
|
|
|
|
|
Hi,
I want to ask about MySqlParameter, when to use Add and when to use AddWithValue? because both seems to be working in every case I tried..
Technology News @ www.JassimRahma.com
|
|
|
|
|
There is no difference in the end result, AddWithValue just shortens the parameter creation process. Use the one you are comfortable with.
Never underestimate the power of human stupidity
RAH
|
|
|
|