473,408 Members | 1,788 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,408 software developers and data experts.

VAB - IValidatorDescriptor is inaccessible due to protection level

Jay
In both of the UnitTest projects that ship with the Ent Lib, (VSTS and
Nunit), there is a TestMethod with the name:
AttributeWithLowerAndUpperBoundsOnlyCreatesAppropr iateValidator.

Each of these tests creates a StringLengthValidatorAttribute:
ValidatorAttribute attribute = new StringLengthValidatorAttribute(10,
20);

The next line creates a validator object based on the settings defined
in the Attribute:
Validator validator =
((IValidatorDescriptor)attribute).CreateValidator( null, null, null);

The final step prior to being able to access the properties of the
StringLengthValidator is:
StringLengthValidator stringLengthValidator = validator as
StringLengthValidator;

The following is what I have completed in my UnitTest class. The
concept of my Unit Test is to loop through all properties defined in
my Entity class, and then through the Attributes defined for each
property.

Sample:

foreach (PropertyInfo myInfo in myType.GetProperties())
{
foreach (Attribute attribute in myInfo.GetCustomAttributes(true))
{
if (attribute is
MSValidation.Validators.StringLengthValidatorAttri bute)
{
Validator validator = ((IValidatorDescriptor)
(ValidatorAttribute)attribute).CreateValidator(nul l, null, null);
Assert.IsNotNull(validator);

StringLengthValidator stringLengthValidator = validator as
StringLengthValidator;
Assert.IsNotNull(stringLengthValidator);
}
}
}

The issue is that I am getting a compile error of:

Microsoft.Practices.EnterpriseLibrary.Validation.I ValidatorDescriptor'
is inaccessible due to its protection level
D:\Development\UnitTest\Entity\CustomerUnitTest.cs

As expected, the IValidatorDescriptor is not color-coded in my unit
test but is in the sample UnitTests. My project is referencing the
EntLib...Validation DLL but I am obviously missing something. Can you
help?

Thanks

May 28 '07 #1
5 2401
As expected, the IValidatorDescriptor is not color-coded in my unit
test but is in the sample UnitTests. My project is referencing the
EntLib...Validation DLL but I am obviously missing something. Can you
help?
If I'm not mistaking the EntLib dll's have a [InternalsVisibleTo]
Attribute which allows specific assemblies (including the provided test
assemblies) to see the internal variables.

Jesse
May 28 '07 #2
Jay
If I'm not mistaking the EntLib dll's have a [InternalsVisibleTo]
Attribute which allows specific assemblies (including the provided test
assemblies) to see the internal variables.
I was looking at that attribute. However, isn't the attribute used in
the configuration of the source DLL and specifying the target assembly
that is permitted to use the Internals?

Meaning that in this scenario wouldn't I have to add that line
AssemblyInfo.cs file of the Enterprise Library object and permit my
object's access to the Enterprise Library methods?

Sorry, I'm new to the VAB and am trying to soak in as much as I can.

Thanks for your help,
Jay

May 28 '07 #3
Jay
Update...I managed to get this working.

I opened the actual VAB c# project ("D:\EntLib3Src\App Blocks\Src
\Validation\Validation.csproj") and modified the AssemblyInfo.cs file
within this project to include the line:

[assembly: InternalsVisibleTo("SourceApplication.UnitTest")]

The SourceApplication.UnitTest is the namespace of my unit testing
project.

After re-compiling the application, I have taken the updated
"Microsoft.Practices.EnterpriseLibrary.Validation. dll" file and then
updated the reference to this DLL in my application. Presto! the
IValidatorDescriptor is now accessible and can convert the attribute
into a valid Validator.

Thanks all for the help.

May 28 '07 #4
* Jay wrote, On 28-5-2007 20:44:
>If I'm not mistaking the EntLib dll's have a [InternalsVisibleTo]
Attribute which allows specific assemblies (including the provided test
assemblies) to see the internal variables.

I was looking at that attribute. However, isn't the attribute used in
the configuration of the source DLL and specifying the target assembly
that is permitted to use the Internals?

Meaning that in this scenario wouldn't I have to add that line
AssemblyInfo.cs file of the Enterprise Library object and permit my
object's access to the Enterprise Library methods?
That is correct. So it isn't going to work with the default
pre-compiled, pre-signed assemblies.
Sorry, I'm new to the VAB and am trying to soak in as much as I can.
Don't worry.

Jesse
May 28 '07 #5
* Jay wrote, On 28-5-2007 21:43:
Update...I managed to get this working.

I opened the actual VAB c# project ("D:\EntLib3Src\App Blocks\Src
\Validation\Validation.csproj") and modified the AssemblyInfo.cs file
within this project to include the line:

[assembly: InternalsVisibleTo("SourceApplication.UnitTest")]

The SourceApplication.UnitTest is the namespace of my unit testing
project.

After re-compiling the application, I have taken the updated
"Microsoft.Practices.EnterpriseLibrary.Validation. dll" file and then
updated the reference to this DLL in my application. Presto! the
IValidatorDescriptor is now accessible and can convert the attribute
into a valid Validator.

Thanks all for the help.

You're welcome :)

Jesse
May 28 '07 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: BlueOysterCult | last post by:
Hello I can't get around the error "inaccessible due to its protection level" - it points at a line that I am using .Sort() and BinarySearch() - but the real problem lies in another part of the...
1
by: Larry | last post by:
Thanks in advanced for your help I've added a TextBox1 and Button1 to a form in C# in VS.net 2003. When I double click on the Button1 at design time, a private method ButtonClick. I've...
1
by: Larry | last post by:
I have a VB background and am developing a new windows app in Csharp. I'm getting the error. 'inaccessible due to its protection level' I've added a TextBox1 and a Button1 to a form. I...
1
by: Chris | last post by:
Hi, New to C# programming. I'm trying to implement some simple security in my website. Basically a user cannot surf to secured aspx pages simply by accessing them directly through the address...
3
by: tshad | last post by:
I am getting a message for my objects that say: testNulls.cs(13,33): error CS0122: 'FtsData.IntType.IntType()' is inaccessible due to its protection level I have a class calling objects out of...
2
by: Jason Shohet | last post by:
I have a line: public System.Web.UI.HtmlControls.HtmlTable bldgInfo; Even though its public, for some reason every so often, .NET tells us that bldgInfo table is inaccessible due to the...
1
by: Arjen | last post by:
Hi, I have this inside a webusercontrol: private string MenuItem = new string; Inside the .ascx file I do this: <%= MenuItem(0) %> And I get this error: ....is inaccessible due to its...
2
by: sck10 | last post by:
Hello, I am getting the following error: fvServiceIdea_ItemUpdating_Validate(object, System.Web.UI.WebControls.FormViewUpdateEventArgs)' is inaccessible due to its protection level. Below...
5
by: Iain | last post by:
Hi All I have the code below (Using Delphi 2006 Developer to create an C# ASP.Net page to update a simple database table. When the page is fired I get the following error message ...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.