C#

C# 중급 – csharpstudy 유튜브 강의 정리

 

https://www.csharpstudy.com/

https://www.youtube.com/watch?v=T58M6aSanCw&list=PLiNvMfa_Y5hdz3Pitggrisaam_35ZqdtE

 

  1. C# 접근 제한자 (Access Modifier) 의 개념과 사용법
  2. C# 인터페이스 기초
  3. 인터페이스를 활용한 사례

 

 


 

C# 접근 제한자 (Access Modifier) 의 개념과 사용법

 

# 클래스 내부의 멤버에 대한 기본 액세스 권한은 private

# class 나 struct 의 기본 기본 액세스 권한은 internal

# internal 은 현재 어셈블리에서만 사용 가능함

# 어셈블리는 빌드하면 나오는 exe 파일이나 dll 파일을 말함

 

 

 


 

C# 인터페이스 기초

 

# 클래스 상속보다 더 가볍고 유연함

 

public interface ISendable
{
    void Send(string msg);
}

 

class Email : ISendable
{
    private string email = "admin@email.com";

    public void Send(string msg)
    {
        Console.WriteLine($"Email {msg} to {email}");
    }
}

class SnailMail : ISendable
{
    public string Address = "admin@snailmail.com";

    public void Send(string msg)
    {
        Console.WriteLine($"Snailmail {msg} to {Address}");
    }
}

class SMS : ISendable
{
    public string Phone = "010-0000-0000";

    public void Send(string msg)
    {
        Console.WriteLine($"SMS {msg} to {Phone}");
    }
}

 

private void InterfaceRun()
{
    List<ISendable> deliveryMethods = new List<ISendable>();
    deliveryMethods.Add(new Email());
    deliveryMethods.Add(new SnailMail());
    deliveryMethods.Add(new SMS());

    Alert(deliveryMethods, "Emergency msg...");
}

private void Alert(List<ISendable> deliveryMethods, string msg)
{
    foreach (var s in deliveryMethods)
    {
        s.Send(msg);
    }
}

 

 

 

 

 

 


 

인터페이스를 활용한 사례

 

https://www.youtube.com/watch?v=o2yCt_m5RUU&list=PLiNvMfa_Y5hdz3Pitggrisaam_35ZqdtE&index=7

 

1. 프로젝트 추가 -> MyProject

2. 프로젝트 추가 -> MyPaintCustom1 // 서드파티에서 만든 라이브러리 Pie 클래스

3. 프로젝트 추가 -> MyPaintInterface // IDrawable 인터페이스

 


MyProject

 

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

    public string Tag { get; set; }
}

 

public class Rect : Shape, IDrawable
{
    public void Draw(string s)
    {
        Console.WriteLine($"{s} Rect Console Write");
    }
}

 

List<IDrawable> drawings = new List<IDrawable>();

// 서드 파티의 Pie 클래스
private void Pie_Click(object sender, RoutedEventArgs e)
{
    Assembly custom = Assembly.LoadFrom(@"C:\Users\user1\source\repos\WpfTest1\MyPaintCustom1\bin\Debug\MyPaintCustom1.dll");
    Type pie = custom.GetType("MyPaintCustom1.Pie");
    IDrawable obj = (IDrawable)Activator.CreateInstance(pie);            
    obj.Draw($"{drawings.Count + 1}");
    drawings.Add(obj);
}

private void Rect_Click(object sender, RoutedEventArgs e)
{
    Rect obj = new Rect();
    obj.Draw($"{drawings.Count + 1}");
    drawings.Add(obj);
}

private void All_Click(object sender, RoutedEventArgs e)
{
    foreach (IDrawable obj in drawings)
    {
        obj.Draw("");
    }
}

 


 

MyPaintCustom1

// 서드파티에서 만든 Pie 클래스

 

namespace MyPaintCustom1
{
    public class Pie : IDrawable
    {
        public void Draw(string s)
        {
            Console.WriteLine($"{s} Pie Console Write");
        }
    }
}

 

 


 

MyPaintInterface

// IDrawable 인터페이스

 

namespace MyPaintInterface
{
    public interface IDrawable
    {
        void Draw(string s);
    }
}

 

 

 

Related posts

Leave a Comment