2010-11-23 5 views
2

저는 C#에서 약간 익숙하며 mssql 데이터베이스에서 레코드를 가져 오는이 스크립트를 가지고 있습니다. 거기에서 키가 객체로 변환됩니다.개체에서 속성을 가져옵니다

그것 :

Object obj = result[i]; 

내가 객체 내부에있는 데이터를 참조 선언 후 줄에 중단 점을 수

. 이제는 데이터가있는 속성에 액세스해야하지만 C#에 익숙하지 않아서 어떻게해야할지 모르겠다.

속성이 호출됩니다. name 속성 이름과 함께 새 클래스를 만들었습니다. 나는 내 객체에 키의 이름을 얻을 때

는 :

myObject.Name = (string) obj.Name; 

IDE는 이미 오류를 제공 그 OBJ 밤은 사용할 수있는 속성.

개체의 이름 특성에 액세스하여 내 개체에 가져올 수있는 방법은 무엇입니까?

감사합니다.

+0

result [i]는 정확히 무엇을 포함합니까?데이터베이스에서 레코드를로드했지만 어떤 형식으로 레코드가 반환 되었습니까? –

+2

C#의 용어에서 .Name은 속성이 아니라 속성입니다. 속성은 C#에서 다른 의미를가집니다. – Shuo

답변

1

그래서 result[i]은 클래스의 인스턴스입니다 (편의상 Foo이라고 부름). 그럼 당신은

Foo obj = result[i]; 
myObject.Name = obj.Name; 

또는

Object obj = result[i]; 
myObject.Name = ((Foo)obj).Name; 
0

개체를 적절한 형식으로 캐스팅해야합니다. 예 : 개체 인 경우 :

class MyObject 
{ 
    public string Name { get; set; } 
} 

당신이 좋아 캐스팅 필요 이상 : 당신이 Object 클래스의 속성에 액세스하려고하는

MyObject obj = (MyObject)result[i]; 
0

, 그리고에는 특성이 없습니다. 당신이 중 하나는 cast 만든 클래스로 objName 속성을 가지고, 또는 (더 간단하게), 데이터베이스를 읽을 때하는 클래스의 인스턴스에 직접 글을 읽을 하나가, 뭔가 같은 :

MyClass obj = result[i]

0

어떤 데이터가 result[i]의 존재를 말할 수 있습니까? 데이터베이스의 레코드에있는 필드의 문자열입니까? (즉, resultDataRow입니까?) 그 의미는 알 수없는 Object 안에 넣는 것입니다. 기본적으로, 당신은 그것을 "복싱"하고 컴파일러에서 객체의 데이터 지식을 제거합니다.

myObject.Name = System.Convert.ToString(result[i]); 

지금이 상당히 여기에서 할 다른 고려 사항이 있다는 것을에서 초보자입니다 : result[i] 그냥 문자열 인 경우

, 뭔가를하려고합니다. result[i]null이라면 예외가 발생합니다. 그러나 학습하는 동안 찾고있는 데이터를 가져와야합니다.

관련 문제