Click here to Skip to main content
15,886,873 members
Home / Discussions / C#
   

C#

 
GeneralRe: How can I detect when a client disconnects from a well known service? Pin
Tom Larsen11-Feb-04 3:53
Tom Larsen11-Feb-04 3:53 
GeneralRe: How can I detect when a client disconnects from a well known service? Pin
HAHAHA_NEXT9-Feb-04 11:01
HAHAHA_NEXT9-Feb-04 11:01 
QuestionHow to get/set printer paper media type Pin
trythat9-Feb-04 5:55
trythat9-Feb-04 5:55 
QuestionDynamic attributes for propertyGrid??? Pin
LongRange.Shooter9-Feb-04 3:11
LongRange.Shooter9-Feb-04 3:11 
AnswerRe: Dynamic attributes for propertyGrid??? Pin
Heath Stewart9-Feb-04 4:17
protectorHeath Stewart9-Feb-04 4:17 
GeneralRe: Dynamic attributes for propertyGrid??? Pin
LongRange.Shooter9-Feb-04 8:09
LongRange.Shooter9-Feb-04 8:09 
GeneralRe: Dynamic attributes for propertyGrid??? Pin
Heath Stewart9-Feb-04 9:33
protectorHeath Stewart9-Feb-04 9:33 
GeneralRe: Dynamic attributes for propertyGrid??? Pin
LongRange.Shooter9-Feb-04 10:38
LongRange.Shooter9-Feb-04 10:38 
Okay....I'm a very visual person so it takes some time to absorb some things. Wink | ;) Our Security Manager handles the group determination by WindowsIdentity.

I think I've got it now:
C#
namespace myCompany.Attributes
{
	internal class SecuredProperty : PropertyDescriptor
	{
		private bool readonlyState;
		public bool IsReadOnly
		{
			get{return readonlyState;}
		}
		public SecuredProperty()
		{
			SecurityManager sec = new SecurityManager();
			if (sec.CheckUserGroup("D-U-TCAEDIT") && !secured)
			{
				readonlyState = false;
			}
			if (sec.CheckUserGroup("D-U-TCA"))
			{
				readonlyState = false;
			}
		}
	}

	internal class SecureDescriptor  : ICustomTypeDescriptor 
	{
		AttributeCollection ICustomTypeDescriptor.GetAttributes()
		{ return TypeDescriptor.GetAttributes(this.secured, true); }

		string ICustomTypeDescriptor.GetClassName()
		{ return TypeDescriptor.GetClassName(this, true); }

		string ICustomTypeDescriptor.GetComponentName()
		{ return TypeDescriptor.GetComponentName(this, true); }

		TypeConverter ICustomTypeDescriptor.GetConverter()
		{ return TypeDescriptor.GetConverter(this, true); }

		EventDescriptor ICustomTypeDescriptor.GetDefaultEvent()
		{ return TypeDescriptor.GetDefaultEvent(this, true); }

		PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty()
		{ return TypeDescriptor.GetDefaultProperty(this, true); }

		object ICustomTypeDescriptor.GetEditor(Type editorBaseType)
		{ return TypeDescriptor.GetEditor(this, editorBaseType, true); }

		EventDescriptor ICustomTypeDescriptor.GetEvents(System.Attribute[] attribs)
		{ return TypeDescriptor.GetEvents(this, attribs, true); }

		PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties()
		{ return new PropertyDescriptorCollection(new SecuredProperty(secured)); }
	}
}


I also understand that I can create a public class Secured:Attribute and have it indicate if the particular property should be secured to just developers. There are just two things I am not completely clear on which is not covered in the help files.

1) In my PropertyDescriptor class or within my CustomTypeDescriptor how do I determine that the Secured Attribute is set to (true) ?
2) When I define all of this in my properties, I'm not clear how I define my CustomTypeDescriptor.

[Description("..."), Secured(true), TypeEditor(typeof(myEditor)),
 Category("Viewing"), ...]


Do I specify a CustomTypeDescriptor, or a TypeDescriptor(typeof(SecureDescriptor)) ?

Thanks very much for your assistance!

Michael

_____________________________________________
Of all the senses I could possibly lose,
It is most often the one called 'common' that gets lost.

GeneralRe: Dynamic attributes for propertyGrid??? Pin
Heath Stewart9-Feb-04 14:02
protectorHeath Stewart9-Feb-04 14:02 
GeneralRe: Dynamic attributes for propertyGrid??? Pin
LongRange.Shooter10-Feb-04 8:58
LongRange.Shooter10-Feb-04 8:58 
GeneralRe: Dynamic attributes for propertyGrid??? Pin
Heath Stewart10-Feb-04 11:18
protectorHeath Stewart10-Feb-04 11:18 
GeneralRe: Dynamic attributes for propertyGrid??? Pin
LongRange.Shooter11-Feb-04 7:49
LongRange.Shooter11-Feb-04 7:49 
GeneralRe: Dynamic attributes for propertyGrid??? Pin
Heath Stewart11-Feb-04 9:14
protectorHeath Stewart11-Feb-04 9:14 
GeneralRe: Dynamic attributes for propertyGrid??? Pin
LongRange.Shooter11-Feb-04 10:45
LongRange.Shooter11-Feb-04 10:45 
GeneralRe: Dynamic attributes for propertyGrid??? Pin
Heath Stewart11-Feb-04 11:53
protectorHeath Stewart11-Feb-04 11:53 
GeneralCommand Line Pin
GetOn&GetGoing8-Feb-04 23:43
GetOn&GetGoing8-Feb-04 23:43 
GeneralRe: Command Line Pin
Heath Stewart9-Feb-04 1:30
protectorHeath Stewart9-Feb-04 1:30 
QuestionHow to execute a file Pin
Jonathan Slenders_8-Feb-04 22:41
sussJonathan Slenders_8-Feb-04 22:41 
AnswerRe: How to execute a file Pin
Mazdak8-Feb-04 23:20
Mazdak8-Feb-04 23:20 
GeneralRe: How to execute a file Pin
Jonathan Slenders9-Feb-04 0:22
Jonathan Slenders9-Feb-04 0:22 
GeneralRe: How to execute a file Pin
Heath Stewart9-Feb-04 1:28
protectorHeath Stewart9-Feb-04 1:28 
AnswerRe: How to execute a file Pin
Mike Clark9-Feb-04 12:13
Mike Clark9-Feb-04 12:13 
QuestionHow to reduce size? Pin
GetOn&GetGoing8-Feb-04 20:22
GetOn&GetGoing8-Feb-04 20:22 
AnswerRe: How to reduce size? Pin
Mazdak8-Feb-04 21:31
Mazdak8-Feb-04 21:31 
GeneralRe: How to reduce size? Pin
GetOn&GetGoing8-Feb-04 21:35
GetOn&GetGoing8-Feb-04 21:35 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.