프로그래밍

c# 정적 데코레이터 응용?

class Data
{
public:
    float m_Data;
};

template<class T>
class Op1 : public T
{
public:
    Op1()
        : T()
    { }

    float m_Op1;
};

template<class T>
class Op2 : public T
{
public:
    Op2()
        : T()
    { }

    float m_Op2;
};

template<class T>
class Op3 : public T
{
public:
    Op3()
        : T()
    { }

    float m_Op3;
};

 

---------------------------------

 

Op3<Op2<Op1<Data>>> Data;
    Data.m_Data;
    Data.m_Op1;
    Data.m_Op2;
    Data.m_Op3;

 

 

c++ 템플릿을 이용해서 데코레이터 패턴을 이용해서 Data에 Op1 ~ Op3 멤버를 접근할 수 있도록 하는 방식인데

c#에서 이런 방식으로 표현하려면 어떻게 해야 하나여? 제네릭으로 구현이 잘 안 되는데;;;;;

 

이거 쓰는 이유가 예를 들면

 

무기 정보가 필요한데

어떤 무기는 이동량을 가지고 어떤 무기는 폭발력을 가진다고 가정한다면

 

Movement<Explosion<DataBase>>   DataSheet;

이런식으로

 

Movment가 가지는 멤버 변수 Movement와

Explosion가 가지는 멤버 변수 ExplosionDamage, ExplosionRange을

 

정적으로 만들고 싶습니다.

데코레이터 패턴을 공부하다가
DataBase를 상속받는 Movment, Explosion을 데코레이터로 이용하면 멤버 접근이 가능한 것을 확인했는데
(동적 데코레이터는 멤버 접급이 안 됨....)

 

c++은 템플릿 쓰면 가능한데 c#은 제네릭으로 어떻게 저걸 구현할까요?

2개의 댓글

2023.10.30

우선 데코레이터 패턴은 같은 인터페이스로 다양한 효과를 내는데 의의가 있는 건데, 어떤 데코레이터를 쓰느냐에 따라서 다뤄야 하는 멤버 변수(인터페이스)가 달라지는 경우라면 데코레이터라고 보기 어렵지 않나.. 싶네요.

 

제네릭으로는 조금 어려울 것 같고 그냥 dictionary같은 걸 이용해서 데이터 기반으로 구현하시는 건 어떨까요?

0
2023.10.30
@스비니

맵컨테이너로 해보고 싶긴한데 유니티에서 인스펙터 뷰에서 수정하는 방안으로 가고 싶었는데

이게 제네릭으로 생성하거나 모든 케이스에 대해서 구조체를 만들어야 하는 상황이라 피하고 싶었거든요...

 

key value 쌍으로 이루는 dictionary게 제일 무난한데

문제는 인스펙터 뷰에서는 저런 컨테이너가 안 됨;;;;

 

어쩔 수 없이 c# 코드로 가지고 있는데 맘 편하긴 할 듯....

 

일단 코드 구조부터 재설계중임;;;;

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
181037 [컴퓨터] 세컨컴 맞추려고 하는데 고기쟁이 0 방금 전 0
181036 [정보] AMD 9000번대 루머 + 뇌피셜 4 Bluee 0 1 시간 전 141
181035 [잡담] 갤저씨지만 이건 좀 바꿔라 1 킹반떼N 0 2 시간 전 81
181034 [모바일] 아이폰13프로 걍 17까지 쓸까? 2 캣펀치 0 2 시간 전 100
181033 [잡담] 크러쉬80 질렀다.. 2 ltearl 0 2 시간 전 57
181032 [모바일] 폴드6 슬림은 왜 내년에 나올까 3 한림예고 0 10 시간 전 214
181031 [잡담] 완본체 모니터랑 괜찮은지 질문 7 사이버전사1 0 11 시간 전 99
181030 [잡담] 알리세일 씨부레 ㅋ 5 아이톨쥬 0 11 시간 전 328
181029 [컴퓨터] 유튜브에서 추천견적 본건데 3 호카손자 0 12 시간 전 97
181028 [견적] 7800x3d가격 6 가기그게그거 0 12 시간 전 266
181027 [컴퓨터] G80SD 사전예구가 다가오네 3 인간지표 0 13 시간 전 85
181026 [견적] 노트북 2지선다 도움 부탁드립니다 8 우디아빠 0 14 시간 전 92
181025 [잡담] 원드라이브는 어케쓰는거여 10 고곤나쉬 0 16 시간 전 154
181024 [컴퓨터] 조립컴퓨터 맞췄는데 쿨러빼고 서멀다시 발라야함? 2 농부의눈물 0 16 시간 전 97
181023 [컴퓨터] 짭수냉 글카 고장낫는디 6 지지지베베베벱 0 17 시간 전 87
181022 [잡담] A52s one ui 6.1 업뎃 나왔었구나 3 손씨네원조비빔밥 0 17 시간 전 146
181021 [프로그래밍] 패스트 캠퍼스 <---- 얘내는 가격 인상 원툴임? 3 조강현 0 18 시간 전 216
181020 [컴퓨터] 리전고 노트북 대용으로도 쓸만함? 2 Tozu 0 18 시간 전 85
181019 [견적] 5700x3d, rx6600 으로 바꾸려고하는데 질문 16 전업주부하고싶다 0 19 시간 전 144
181018 [컴퓨터] 컴터 샀다 8 공백지 1 19 시간 전 144