각 개체의 ID, 이름 및 TypeCode가 다른 몇 가지 차이점이있는 동일한 속성을 가진 3 개의 개체가 있습니다. 데이터베이스에는 ID, Name 및 TypeCode 필드가 포함 된 첫 번째 테이블이 있으며 각 개체의 해당 속성을 각각 포함하는 세 개의 다른 테이블이 있습니다.팩토리 패턴을 빌드하는 일반적인 방법
표 1 : Id | 이름 | 유형 코드
표 2 : Id | FunctionName
표 3 : Id | 분석 명
표 4 : Id | PropertyName
우리는 TypeCode에 따라 개체의 속성을 반환하는 "GetProperties"라는 storedProcdure가 있습니다. "GetProperties"는 객체 ID 인 하나의 인수를 취합니다. 우리는 저장 프로 시저를 호출하기 전에 TypeCode를 모른다.
의 TypeCode 함수에는 다음 필드가 반환되는 경우 :
ID, 이름, TypeCode의 :의 TypeCode이 분석에는 다음 필드가 반환되는 경우,
ID, 이름,하는 TypeCode를 FUNCTIONNAME
, AnalysisName 내가 4 개 클래스 만든
등 ... : FunctionObject, AnalysisObject 및 PropertyObj을 MyObject 클래스에서 상속받은 요법.
이public T GetObject<T>(string storedProcedure, List<DataBaseParameteres> parameters) where T: new()
{
T result = new T();
OpenConnection();
SqlDataReader reader = ExecuteSqlCommand(storedProcedure, parameters);
PropertyInfo[] properties = typeOf(T).GetProperties();
if(reader.Read())
{
for(int i = 0; i<properties.Count(); i++)
{
object value = Convert.ChangeType(reader[properties[i].Name], properties[i].PropertyType);
properties[i].SetValues(result, value, null);
}
}
reader.Close();
CloseConnection();
return result;
}
이 기능은 내가 다음과 같이 호출 할 수 있습니다, 잘 작동하고 생성 된 개체를 반환합니다 :
MyObject obj1 = GetObject<MyObject>(obj1Id);
을
public class MyObject
{
public decimal Id;
public string Name;
public string TypeCode;
}
public class FunctionObject: MyObject
{
public string FunctionName;
}
public class AnalysisObject: MyObject
{
public string AnalysisName;
}
public class PropertyObject: MyObject
{
public string PropertyName;
}
나는 나 동적 객체를 만들 수있는 일반적인 기능을 만들었습니다
내 문제는 이제 일반 개체 메서드 "GetObject"를 수정하여 FunctionObject, AnalysisObject 및 Propertyobject를 수정하는 방법을 알고 싶습니다. 함수를 호출 할 때 내가하는 TypeCode에 대해 어떤 생각을 가지고 있지 않기 때문에 내가하는 TypeCode하지 않는 한 나는이 작업을 수행 할 수 없습니다 : 나는 당신의 시나리오에 따라, 생각하지 말아
FunctionObject obj2 = GetObject<FunctionObject>(obj2Id);
반드시 Entity Framework를 살펴 봐야합니다. –
많은 선택지가 없다. 구멍 프로젝트를 수정할 수 없다. 엔티티 프레임 워크를 추가 할 수 없다. 단지 논문 클래스를 수정해야한다. – user3540496