0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Autodesk Inventor API Hacking (C#9.0)

Posted at

#0. はじめに
Freeradicalの中の人、yamarahです。
Autodesk Inventor API Hacking (C#8.0、そして.NET Core3.0)の続きで、C#9.0は使えるのか、検証します。

#1. C# 9.0
##1.1 C#8.0 → C#9.0に切り替える
結論を言うと、C#9.0に出来ました。変更は簡単で、Projectの<LangVersion>を書き換えるだけです。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Library</OutputType>
    <TargetFramework>net472</TargetFramework>
    <RootNamespace>InvAddIn</RootNamespace>
    <LangVersion>8.0</LangVersion>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  (以下、続く)

これを、

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Library</OutputType>
    <TargetFramework>net472</TargetFramework>
    <RootNamespace>InvAddIn</RootNamespace>
    <LangVersion>9.0</LangVersion>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  (以下、続く)

とするだけです。

##1.2 何が変わるの?
大きくは変わりません。と言うのも、InventorのAddInを書く限りは.NET Frameworkを使い続ける必要があり、.NET Coreで有効になる多くの新機能が使えないのです。
数少ない.NET Frameworkでも使える新機能で有用なのは、オブジェクト初期化の簡略化です。以下のように書けるようになりました。

Dictionary<int, string> Table = new();  // 右辺を省略できる
// 今までは、こう書いていた。
//Dictionary<int, string> Table = new Dictionary<int, string>();
// もしくは、varが使える場面では、
//var Table = new Dictionary<int, string>();

また、些細ですが型によるswitchが出来るようになりました。

switch (sketchEntity)
{
// C#8.0では'種類のパターン'が使えないので、次のように書く必要があった。
//  case SketchLine _:
    case SketchLine:
        message = "Line";
        break;
//  case SketchArc _:
    case SketchArc:
        message = "Arc";
        break;
    default:
        break;
}

#99. 親の記事に戻る
Autodesk Inventor API Hacking (概略)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?