안녕하세요 저는 C#에서 인터페이스와 추상 클래스를 처음 사용하고 있습니다. 샘플 응용 프로그램을 만들 때 문제가 발생하여 저장 기능에 대한 세부 정보를 저장해야합니다. 응용 프로그램에 공통점은 객체가 다를뿐입니다. void Save(User data);
및 void Save(Admin data)
내 질문에 내가 이렇게하면, 예를 들어 유형 중 하나에 대한 Save
메소드를 호출 할 수 있도록 할 사용자 및 관리자 클래스 dynamicalyC에서 모델 클래스를 동적으로 지정하는 방법
0
A
답변
1
사용 Generics
public void Save<T>(T data) where T: class
{
...
}
을 지정할 수있는 방법입니다
Admin admin = new Admin();
User user = new User();
dbClass.Save(admin); // T is implicitly inferred by the parameter type
dbClass.Save(user);
서명에 대한 제약 즉, where T: class
은 클래스 만 매개 변수로 전달할 수 있다고 규정합니다. 그러나 string
는 유형을 완벽하게 제어 할 당신이 당신의 클래스가 기본 클래스에서 파생하거나 특정 인터페이스 및 사용을 구현할 수 원하는 경우 기술적으로
dbClass.Save("string")
를 호출 할 수있는 .NET에서 클래스의 특별한 유형 실제로 제공 그 제약 조건으로 예.
public class Entity
{
...
}
public class Admin : Entity
{
}
public class User : Entity
{
}
그럼 당신은 당신의 제약 조건이 where T : Entity
으로 업데이트 할 것, 이것은 당신이 단지 Save
방법으로 개체를 전달할 수 있도록한다.
0
나는 두 가지 옵션을 볼 수
는
IDbEntity
처럼 뭔가를User
및Admin
가 동일한 인터페이스를 구현합니다 (또는 같은 추상 클래스를 상속). 귀하의 방법은 다음과 같다 : 당신의 방법을 저장private void Save<T>(T data) { // your implementation here } public void Save(User data) { Save<User>(data); } public void Save(Admin data) { Save<Admin>(data); }
0
사용 제네릭 :
public void Save(IDbEntity data)
데이터 다음이 공공 래퍼, 각 유형에 대한 하나를 저장하는 개인 일반적인 방법을 만들기
public void Save<T>(T data) where T: MyAbstractClass
{
// your save method code here
}
리플렉션을 사용하면 절약 할 클래스를 결정할 수 있습니다. 귀하의 클래스 Admin
또는 User
중 하나를 선택하십시오. 같은 추상 클래스
관련 문제
- 1. 장고 - 모델 데이터베이스를 지정하는 방법?
- 2. 클래스를 동적으로 만드는 방법
- 3. C에서 PrintCapabilities 클래스를 사용하는 방법
- 4. C에서 클래스를 클래스로 변환하는 방법
- 5. 동적으로 생성 할 클래스를 결정하는 올바른 방법
- 6. C에서 winform의 컨트롤 박스를 사용자 지정하는 방법 #
- 7. C에서 ANTLR 예외를 사용자 지정하는 방법
- 8. C에서 포인터로 16bpp 주소를 올바르게 지정하는 방법
- 9. Objective C에서 NSPredicate로 범위를 지정하는 방법
- 10. Django 추상 모델 클래스에서 동적으로 사용 권한을 지정하는 방법은 무엇입니까?
- 11. WCF 서비스에서 사용되는 구체적인 클래스를 지정하는 방법
- 12. Hadoop Configuration 클래스를 특정 디렉토리로 지정하는 방법
- 13. C에서 동적으로 구조체를 정의하십시오.
- 14. 동적으로 이름을 지정하는 프로세스
- 15. 동적으로 MVC 서식을 지정하는
- 16. 저장 프로 시저에서 테이블을 동적으로 지정하는 방법
- 17. 동적으로 ASP.net Listview LayoutTemplate 스타일을 지정하는 방법?
- 18. .net .config 파일을 동적으로 사용자 지정하는 방법
- 19. 동적으로 JMX 포트 번호를 지정하는 방법
- 20. 동적으로 jpeg 파일 이름을 지정하는 방법
- 21. as3에서 객체의 변수 이름을 동적으로 지정하는 방법
- 22. 데이터 소스의 파일 이름을 동적으로 지정하는 방법
- 23. 객관적인 C에서 클래스를 동적으로 선언 할 수있는 방법이 있습니까?
- 24. C에서 범위를 지정하는 방법은 무엇입니까?
- 25. C에서 스타일을 지정하는 방법은 무엇입니까?
- 26. 객관적인 C에서 C++ 템플릿 클래스를 사용하는 방법
- 27. Objective-C에서 클래스를 제어하는 방법을 사용하는 방법
- 28. Objective C에서 ConstantList 클래스를 만드는 방법
- 29. Objective-c에서 자주 액세스하는 클래스를 디자인하는 방법
- 30. C에서 클래스의 기본 클래스를 얻는 방법
에서 상속해야합니다
Admin
및User
이 당신이 호출 할 수 있습니다 의미 예를 들어, '저장 (42)'. 그리고 그것이 그것이 무엇이 원하는지 확실하지 않습니다. – svick@svick 제약 조건은 클래스 만 저장할 수 있다고 지시합니다. – James
또한 "상속 된"것이 아니라 "추론 된"의미라고 생각합니다. – svick