- PR -

【C#】構造体定義の共有利用について

投稿者投稿内容
JPS
会議室デビュー日: 2004/11/09
投稿数: 3
投稿日時: 2004-11-09 11:44
はじめまして、C#初心者なので稚拙な質問でしたら申し訳ありません。

C/C++では、DLLやLibを公開するときは、本体と構造体を定義したヘッダファイルを
公開していましたが、C#においてはどのようにして構造体定義を公開したら
良いのでしょうか?

struct記述したCSファイルの公開も考えたのですが、namespaceを各自変更する
必要もあり、提供したファイルが別物になるのが嫌だなぁと思います。

複数メンバーで開発されている方々のご意見をお願いします。

たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2004-11-09 11:59
私は、ただ単にクラスにしていますよ。

JPSさんに、なにか特別な目的があっての質問ということでしたら
それを書いていただければ回答があるかもしれません。

_________________
たつごろー
codeseek
こみゅぷらす
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-11-09 12:10
JPSさん、こんにちは。

引用:

公開していましたが、C#においてはどのようにして構造体定義を公開したら
良いのでしょうか?



「.NET Framework 開発者ガイド」-「メタデータの概要」に、以下のような記述があります。

引用:

共通言語ランタイム モジュールおよびアセンブリは、自己言及的なファイルです。モジュールのメタデータには、他のモジュールと相互作用するのに必要なすべての情報が含まれています。


参考になりますか?

まずは「.Net Framework SDK ドキュメント」などに、ざっとでも目を通す事をお奨めします。

【修正】
引用部分の一部にボールド指定。


[ メッセージ編集済み 編集者: きくちゃん 編集日時 2004-11-09 14:41 ]
JPS
会議室デビュー日: 2004/11/09
投稿数: 3
投稿日時: 2004-11-09 12:11
説明が不足していてもう訳ありませんでした。

クラスメソッドの引数に、構造体を利用しようと考えています。

struct ST
{
int a;
int b;
}

ClassA.Foo(ST st) {
}
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2004-11-09 12:22
引用:

JPSさんの書き込み (2004-11-09 11:44) より:
struct記述したCSファイルの公開も考えたのですが、namespaceを各自変更する
必要もあり、提供したファイルが別物になるのが嫌だなぁと思います。


こんにちは。
私どもは、using namespace (C#) で定義先を指定してますけど...
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-11-09 14:13
> C#においてはどのようにして構造体定義を公開したら良いのでしょうか?

publicを付ければ公開されます。

public struct ST
{
public int a;
public int b;
}

外部からはオブジェクトブラウザで参照できます。
ドキュメントを公開するのであれば、NDOCがお勧めです。
JPS
会議室デビュー日: 2004/11/09
投稿数: 3
投稿日時: 2004-11-09 15:12
WIN32 APIをC#から利用する場合に、引数で使用する構造体を
コーディングしたため、複数メンバーで同じAPIをもし使うなら
流用する方法がないものか検討もしていました。

早速のご指導ありがとうございました。

using namespaceや、ndocなどで試してみようと思います。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-11-09 15:37
きくちゃんさんが参考情報を挙げられていますが、ようは、.NET Frameworkでは、型情報はDLLやEXE等のアセンブリに直接保持されています。
コンパイラは、参照しているアセンブリから型情報を読み出して、型を解決します。
※同時にコンパイルしているソースについてはソースから?かな?

つまり、CやC++のようなプロトタイプ宣言は不要ということです。
ちなみにusingやImportsは、#includeのようなものだ、と言われたり思われたりすることが多いようですが、実は全然違いますので注意だったりします。

スキルアップ/キャリアアップ(JOB@IT)