KO CSharp Keyword alias - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C#: alias

ํ•ธ๋“œ๋ถ C# ยท ์‹ค์šฉ ๊ฐ€์ด๋“œ

์™ธ๋ถ€ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ณ„์นญ์€ ๋ณ„๋„์˜ ๋ฃจํŠธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ์–ด์…ˆ๋ธ”๋ฆฌ์˜ ๋™์ผํ•œ ์ •๊ทœํ™”๋œ ์œ ํ˜• ์ด๋ฆ„์„ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ์ฐธ์กฐ๋ฅผ ์œ„ํ•ด ๋ณ„์นญ์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ์—์„œ ๋ณ„์นญ์€ extern ๋ณ„์นญ์„ ํ†ตํ•ด ์„ ์–ธ๋˜๊ณ  :: ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ (Example.cs)

ํ‘œ์‹œ๋œ ๋ชจ๋“  ํŒŒ์ผ์„ ๊ฐ™์€ ํด๋”์— ์ €์žฅํ•˜๊ณ  Example.csproj๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”. Example.cs๋งŒ์œผ๋กœ๋Š” Tools ๋ณ„์นญ ์ฐธ์กฐ๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Example.cs:

// PROJECT-EXAMPLE
extern alias Tools;
System.Console.WriteLine(Tools::Demo.Number.Value);

Dependency.cs:

// PROJECT-EXAMPLE
namespace Demo; public static class Number { public static int Value => 7; }

Dependency.csproj:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net10.0</TargetFramework><EnableDefaultCompileItems>false</EnableDefaultCompileItems></PropertyGroup><ItemGroup><Compile Include="Dependency.cs" /></ItemGroup></Project>

Example.csproj:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net10.0</TargetFramework><EnableDefaultCompileItems>false</EnableDefaultCompileItems></PropertyGroup><ItemGroup><Compile Include="Example.cs" /><ProjectReference Include="Dependency.csproj"><Aliases>Tools</Aliases></ProjectReference></ItemGroup></Project>
dotnet run --project Example.csproj

๊ฒฐ๊ณผ:

7

ํ†ต์‚ฌ๋ก 

extern alias Legacy;
using OldLabel = Legacy::Shared.Label;

๋ณ„์นญ์„ ํ†ตํ•ด ๋กœ์ปฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์•ก์„ธ์Šค

ํŒŒ์ผ Example.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <LangVersion>14.0</LangVersion>
    <Nullable>enable</Nullable>
    
  </PropertyGroup>
  <ItemGroup>
    <Compile Remove="Dependency/**/*.cs" />
    <ProjectReference Include="Dependency/Dependency.csproj"><Aliases>Legacy</Aliases></ProjectReference>
  </ItemGroup>
</Project>

ํŒŒ์ผ Program.cs:

extern alias Legacy;
using System;

internal static class Program
{
    public static void Main()
    {
        var label = new Legacy::Shared.Label("Local library");
        Console.WriteLine(label.Text);
    }
}

ํŒŒ์ผ Dependency/Dependency.csproj:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net10.0</TargetFramework></PropertyGroup></Project>

ํŒŒ์ผ Dependency/Label.cs:

namespace Shared;
public sealed class Label(string text)
{
    public string Text { get; } = text;
}

๊ฒฐ๊ณผ:

Local library

๋™์ผํ•œ ์ •๊ทœํ™”๋œ ์œ ํ˜• ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋‘ ๊ฐœ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

ํŒŒ์ผ Example.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <LangVersion>14.0</LangVersion>
    <Nullable>enable</Nullable>
    
  </PropertyGroup>
  <ItemGroup>
    <Compile Remove="LegacyDependency/**/*.cs;ModernDependency/**/*.cs" />
    <ProjectReference Include="LegacyDependency/LegacyDependency.csproj"><Aliases>OldApi</Aliases></ProjectReference>
    <ProjectReference Include="ModernDependency/ModernDependency.csproj"><Aliases>NewApi</Aliases></ProjectReference>
  </ItemGroup>
</Project>

ํŒŒ์ผ Program.cs:

extern alias OldApi;
extern alias NewApi;
using System;
using OldCounter = OldApi::Shared.Counter;
using NewCounter = NewApi::Shared.Counter;

internal static class Program
{
    public static void Main()
    {
        Console.WriteLine($"Old: {OldCounter.Scale(5)}");
        Console.WriteLine($"New: {NewCounter.Scale(5)}");
    }
}

ํŒŒ์ผ LegacyDependency/LegacyDependency.csproj:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net10.0</TargetFramework></PropertyGroup></Project>

ํŒŒ์ผ LegacyDependency/Counter.cs:

namespace Shared;
public static class Counter { public static int Scale(int value) => value * 2; }

ํŒŒ์ผ ModernDependency/ModernDependency.csproj:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net10.0</TargetFramework></PropertyGroup></Project>

ํŒŒ์ผ ModernDependency/Counter.cs:

namespace Shared;
public static class Counter { public static int Scale(int value) => value * 3; }

๊ฒฐ๊ณผ:

Old: 10
New: 15

๊ณต์‹ ์ถœ์ฒ˜: Microsoft ํ•™์Šต.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ