WSOD – White Screen of Death in Winforms Designer
I’ve seen it many times in the past, now it has a name
I’ve seen it many times in the past, now it has a name
I kept getting an error when trying to use CopySourceAsHTML in Visual Studio 2005. The error was that CopySourceAsHTML was unable to access the clipboard. Turns out the problem is when using it in a VPC, and the answer is here.
I have a pipe-delimited text file that I am parsing and using to fill a collection of custom business objects. Instead of hard-coding the bits of each pipe-delimited line, I am using an XML file to map data items in the file to object members, like this XML fragment:
<Field>
<Name>NAMID</Name>
<Location>0</Location>
<MapsTo>MemberId</MapsTo>
<IsRole>false</IsRole>
</Field>
After parsing and matching the data element to the proper member name, I call this function:
public void SetDataMemberValue(string memberName, Member member, string data)
{ // get an instance
// of that object's type.
Type objectType = member.GetType();
PropertyInfo[] properties = objectType.GetProperties();
foreach (PropertyInfo property in properties)
{ if (string.Equals(property.Name, memberName, StringComparison.OrdinalIgnoreCase))
{
object[] args = new object[1];
args[0] = data;
object result = null;
if (property.PropertyType == data.GetType())
{
//The type of the property matches the data's type
result = data;
}
else
{
result = property.PropertyType.InvokeMember("Parse", BindingFlags.InvokeMethod, null, result, args);
}
if (result != null)
{
property.SetValue(member, result, null);
}
}
}
}
The tricky bit is the InvokeMember call, which is casting my string to the appropriate type for the property. Of course this is they stylized version of the function, I removed the try-catch bits to make it smaller and readable for the acutal function. You should wrap the InvokeMember call with a try-catch as Parse methods can fail quite hard.
All content ©2012 David Truxall
Desgin based on Canvass by Free CSS Templates
Bad Behavior has blocked 83 access attempts in the last 7 days.