System.Attribute에서 상속 한 매우 기본적인 클래스 라이브러리가 있습니다. 또한 DLL을 다른 프로그램에서 사용할 수 있도록 어셈블리로 서명했습니다.C# 외부 클래스 라이브러리의 특성
namespace BearData
{
public class BearData : Attribute
{
private string[] array1;
private string bear = "Bear";
private int weight;
public BearData(string bear)
{
this.bear = bear;
}
public string Bear
{
get
{
return bear;
}
set
{
bear = value;
}
}
public int Weight
{
get
{
return weight;
}
set
{
weight = value;
}
}
public string[] BearTypes()
{
array1 = new string[8];
array1[0] = "Brown/Grizzly";
array1[1] = "Polar";
array1[2] = "Asian Black";
array1[3] = "American Black";
array1[4] = "Sun";
array1[5] = "Sloth";
array1[6] = "Spectacled";
array1[7] = "Giant Panda";
return array1;
}
}
}
여기서는 기본 콘솔 응용 프로그램에 사용됩니다. 유형의
bearAttribute = (BearData.BearData)attrs[0];
"처리되지 않은 예외 ': 그러나 때문에 내 교수, 비밀 모호한, 그리고 수수께끼의 특성으로, 나는이 줄에서 오류가 일하러이 점점 여전히 독립에 있어요 System.IndexOutOfRangeException ' 가 Assigntment5_Console.exe에서 발생했습니다.'는 정확한 오류입니다.
그 특정 오류의 원인은 무엇입니까?
또한 일반적으로 외부 라이브러리에서 가져온 속성을 사용하는 것이 좋고/적절한 방법입니까? 여기에 무작위 배열이 던져졌고 속성 클래스에 배열을 캐스팅한다는 것이 이상하게 보입니다.
그건 그렇고. 이것은 교수님이 단일 Visual Studio 인스턴스에서 분리 된 속성 클래스의 코드를 작성한 방법입니다.() 메소드를 그는 또한 수출 클래스 라이브러리 DLL의 예를했고 나는 Program.Main에 2
using BearData;
namespace Assigntment5_Console
{
class Program
{
[BearData.BearData("Bear", Weight = 1000)]
static void Main(string[] args)
{
MemberInfo attributeInfo;
attributeInfo = typeof(BearData.BearData);
object[] attrs = attributeInfo.GetCustomAttributes(false);
//for (int i = 0; i < attrs.Length; i++)
//{
// Console.WriteLine(attrs[i]);
//}
BearData.BearData bearAttribute;
bearAttribute = (BearData.BearData)attrs[0];
Console.WriteLine("Animal: " + bearAttribute.Bear + "\nAverage Weight: " + bearAttribute.Weight);
Console.ReadLine();
}
}
}
을 수정해야이
속성을 찾고해야합니다. 고마워요! –