トップページ⇒tech
957コメント326KB

C♯相談室 Part2

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん♯NGNG
C#,.NET関連の話題はこちらでどうぞ。

前スレ
http://piza2.2ch.net/test/read.cgi/tech/977112364/

Insider.NET
http://www.atmarkit.co.jp/fdotnet/
.NET関連リンク
http://www.atmarkit.co.jp/fwin2k/rescenter/indexpage/net.html
0232デフォルトの名無しさんNGNG
newってDelphiでいうreintroduce?(って分かるひといないのかも)
仮想関数を下位クラスで隠蔽する時に使う?
0233デフォルトの名無しさんNGNG
>>230さん。丁寧なレスありがとうございました。よくわかりました。
本当にありがとうございました。
0234デフォルトの名無しさんNGNG
>>231 コンパらが叱ってくれるのは有難いですね。
0235デフォルトの名無しさんNGNG
>>234 コンパらX コンパイラ○ 鬱氏。
0236デフォルトの名無しさんNGNG
C#(・∀・)イイ!! 123.ToString( )(・∀・)イイ!! (・∀・)Let's See Sharp!
0237デフォルトの名無しさんNGNG
http://www.atmarkit.co.jp/fdotnet/opinion/kawamata/2001_10.html
Delギコが生きてたら激怒しそうな内容だな。
0238デフォルトの名無しさんNGNG
>>237 「生きてたら」(笑) やっぱりCUI派の人なんすね。この川俣さん。
0239通りすがりのプログラマNGNG
>>237
「オブジェクト指向との別れ」の理由は納得できるところも少なくないが、
デザパタとかは、どう認識してるのか、聞いてみたい。
0240デフォルトの名無しさんNGNG
いまさらなんですけど、
前回終了時の位置やフォームのサイズを記憶するにはどうすればいいでしょうか?
0241デフォルトの名無しさんNGNG
>>237
要はいわゆるコンポーネント指向ってことか。
センセーショナルに書きゃあいいってもんじゃねーぞ川俣。
0242デフォルトの名無しさんNGNG
>>240
レジストリとかiniファイル。
.NET的にはXMLの方がいいのかな。
0243デフォルトの名無しさんNGNG
ショック! コンストラクタにアクセスコントロールがついてたので、
コンストラクタとわからなかった!詩嚢。
0244デフォルトの名無しさんNGNG
.NET Frameworkにメール関連のAPIってありますか?
0245デフォルトの名無しさんNGNG
>>244
System.Web.Mail
0246244NGNG
>>245
ありがとうございます。
これってCDOとは別物ですか?
0247名無しさん♯NGNG
>>246
内部でCDOを使ってるよん。
0248244NGNG
>>247
ありがとうございます。
そうですか...。CDO以外の実装に期待したんですが...。
0249デフォルトの名無しさんNGNG
メール投げて遊んでみた。簡単なんだね。
悪さはできなかった。(藁
0250デフォルトの名無しさんNGNG
ListViewの詳細表示でカラム部分をクリックした時、
リストをソートしたいのですが、ツールボタンと同じように
分岐というイマイチな方法でないとダメでしょうか?

listView1.ColumnClick += new ColumnClickEventHandler(listView1_ColumnClick);

private void listView1_ColumnClick(object sender, ColumnClickEventArgs e) {
  if (e.Column == 0) {
    // ソート
  }
}
0251デフォルトの名無しさんNGNG
>>242
具体的なサンプルってあります?
0252デフォルトの名無しさんNGNG
基礎的な質問ですが,C#では配列演算子のオーバーロードができなくなってる‥
のでしょうか?
0253デフォルトの名無しさんNGNG
>>252
perlの連想配列みたいなことを配列アクセスでやってたよ。
だからできるんじゃない?
0254デフォルトの名無しさんNGNG
>>253
ありがとうございます.従来のC++のソースを移植しているんですが
なかなか一筋縄にはいきませんね.
0255デフォルトの名無しさんNGNG
C++からですか・・・
内容によっては無理に一対一に対応させるよりも、
やり直したほうが早いかもね。
0256デフォルトの名無しさんNGNG
私もサンプルほしいです。
できればXMLで。
0257名無しさん♯NGNG
>>250
そうするしかないと思うよん。
問題は、ソートの部分をどこまで簡潔に記述できるかだと思う...。

>>251
>>256
XmlTextReaderを使うととっても便利よん。

単純なサンプル
 http://www.eponymous.fsnet.co.uk/dotnetfaq.htm#11.4

やや込み入ったサンプル
 http://support.microsoft.com/support/kb/articles/Q301/2/28.ASP
0258名無しさん♯NGNG
ひまだから作ってみた。(XMLのサンプル)
とりあえず、というレベルね。

using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using System.Xml;

class TestForm : Form
{
  public TestForm() {
    this.Load += new EventHandler(this.form_Load);
    this.Closing += new CancelEventHandler(this.form_Closing);
  }

  const string CONFIG_FILE_NAME = "config.xml";

  private void form_Load(object sender, EventArgs e) {
    XmlTextReader reader = null;

    try {
      reader = new XmlTextReader( new StreamReader(CONFIG_FILE_NAME) );

      int x = 0;
      int y = 0;
      int width = 0;
      int height = 0;

      while ( reader.Read() ) {
        if (reader.NodeType != XmlNodeType.Element) {
          continue;
        }

        switch (reader.Name) {
          case "x":
            reader.Read();
            x = Convert.ToInt32(reader.Value);
            break;
0259名無しさん♯NGNG

          case "y":
            reader.Read();
            y = Convert.ToInt32(reader.Value);
            break;

          case "width":
            reader.Read();
            width = Convert.ToInt32(reader.Value);
            break;

          case "height":
            reader.Read();
            height = Convert.ToInt32(reader.Value);
            break;
        }

        this.Bounds = new Rectangle( new Point(x, y), new Size(width, height) );
      }
    }
    catch (FileNotFoundException x) {
      Debug.WriteLine("Exception : " + x.Message);
    }
    finally {
      if (reader != null) {
        reader.Close();
      }
    }
  }

  private void form_Closing(object sender, CancelEventArgs e) {
    XmlTextWriter writer = null;

    try {
      writer = new XmlTextWriter( new StreamWriter(CONFIG_FILE_NAME) );
      writer.Formatting = Formatting.Indented;
      writer.Indentation = 2;
0260名無しさん♯NGNG

      writer.WriteStartElement("configuration");

    // ポジションの保持
      Point position = this.Location;
      writer.WriteStartElement("position");

      writer.WriteStartElement("x");
      writer.WriteString( position.X.ToString() );
      writer.WriteEndElement();

      writer.WriteStartElement("y");
      writer.WriteString( position.Y.ToString() );
      writer.WriteEndElement();

      writer.WriteEndElement();  // position

    // サイズの保持
      Size size = this.Size;
      writer.WriteStartElement("size");

      writer.WriteStartElement("width");
      writer.WriteString( size.Width.ToString() );
      writer.WriteEndElement();

      writer.WriteStartElement("height");
      writer.WriteString( size.Height.ToString() );
      writer.WriteEndElement();

      writer.WriteEndElement();  // size

      writer.WriteEndElement();  // configuration
    }
    finally {
      if (writer != null) {
        writer.Close();
      }
    }
  }

  [ STAThread ]
  public static void Main() {
    Application.Run( new TestForm() );
  }
}
0261デフォルトの名無しさんNGNG
>>258-260
XMLがきちんと整形されてる。(・∀・)イイ!
0262デフォルトの名無しさんNGNG
>>258-260 のiniファイルバージョン希望。
0263名無しさん♯NGNG
>>262
iniファイルはめんどいのでパス。ごめんちゃい。
(MFCのCWinAppみたいに、便利なヘルパーはないのよ。)
0264デフォルトの名無しさんNGNG
>>257
> 問題は、ソートの部分をどこまで簡潔に記述できるかだと思う...。

     ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/< 先生!サンプルください!
 _ / /   /   \
\⊂ノ ̄ ̄ ̄ ̄\   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||          ||
0265250NGNG
>>257
ありがとうございます。
うーん、イマイチだわ。columnHeader1.Clickだったらいいのに。
ソートはメインアイテムだとこのように簡単なのですが、
サブアイテムだと自分で作らないといけないんですよね。>>264

private void listView1_ColumnClick(object sender, ColumnClickEventArgs e) {
  if (e.Column == 0) {
    if (listView1.Sorting == SortOrder.Ascending) {
      listView1.Sorting = SortOrder.Descending;
      // columnHeader1.Text = "名前 ▽";
    }
    else {
      listView1.Sorting = SortOrder.Ascending;
      // columnHeader1.Text = "名前 △";
    }
  }
}
0266DelフサギコNGNG
   _____
 /:\.____\  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 |: ̄\ ミ ゚Д゚ミ\< C#かっこいいじゃん!>>XML
 |:   |: ̄ ̄U U ̄:| \__________

 .______
 |:  :\      \
 |:   |: ̄ ̄U U ̄:|  挟まって痛い
      
        
0267名無しさん♯NGNG
>>264
実は、昼間に作成済みだったりする。(藁

using System;
using System.Collections;
using System.Windows.Forms;

class Form1 : Form
{
  ListView listView1 = new ListView();

  public Form1() {
    listView1.Dock = DockStyle.Fill;
    listView1.View = View.Details;
    listView1.ColumnClick += new ColumnClickEventHandler(this.listView1_ColumnClick);

    // カスタムComparerを設定
    listView1.ListViewItemSorter = new Comparer1();

    // とりあえず3列作る
    ListView.ColumnHeaderCollection header = listView1.Columns;
    header.Add( new ColumnHeader() );
    header.Add( new ColumnHeader() );
    header.Add( new ColumnHeader() );

    // データを設定(この時点では並べ替えなし)
    ListView.ListViewItemCollection items = listView1.Items;
    items.Add( new ListViewItem(new string[] { "bbb", "ccc", "aaa" }) );
    items.Add( new ListViewItem(new string[] { "aaa", "bbb", "ccc" }) );
    items.Add( new ListViewItem(new string[] { "ccc", "aaa", "bbb" }) );

    this.Controls.Add(listView1);
  }

  private void listView1_ColumnClick(object sender, ColumnClickEventArgs e) {
    Comparer1 comparer = listView1.ListViewItemSorter as Comparer1;

    if (comparer.SortColumn == e.Column) {
      if (comparer.Sorting == SortOrder.Ascending) {
        comparer.Sorting = SortOrder.Descending;
      }
      else {
        comparer.Sorting = SortOrder.Ascending;
      }
    }
    else {
      comparer.SortColumn = e.Column;
      comparer.Sorting = SortOrder.Ascending;
    }

    listView1.Sorting = comparer.Sorting;
    listView1.Sort();
  }
0268名無しさん♯NGNG

  class Comparer1 : IComparer
  {
    public Comparer1() {
    }

    SortOrder sorting = SortOrder.None;

    public SortOrder Sorting {
      get { return sorting; }
      set { sorting = value; }
    }

    int sortColumn = 0;

    public int SortColumn {
      get { return sortColumn; }
      set { sortColumn = value; }
    }

    public int Compare(object x, object y) {
      if (sorting == SortOrder.None) {
        return 0;
      }

      string s1 = (x as ListViewItem).SubItems[sortColumn].Text;
      string s2 = (y as ListViewItem).SubItems[sortColumn].Text;

      if (sorting == SortOrder.Ascending) {
        return s1.CompareTo(s2);
      }
      else {
        return s2.CompareTo(s1);
      }
    }
  }

  [ STAThread ]
  public static void Main() {
    Application.Run( new Form1() );
  }
}
0269デフォルトの名無しさんNGNG
>>267-268
すごい!!ありがとうございます!!
でも、

     ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    (; ´∀`)/< 先生!サンプルが難しいです!
 _ / /   /   \
\⊂ノ ̄ ̄ ̄ ̄\   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||          ||
0270251NGNG
>>257
> >>250
> そうするしかないと思うよん。
> 問題は、ソートの部分をどこまで簡潔に記述できるかだと思う...。
>
> >>251
> >>256
> XmlTextReaderを使うととっても便利よん。
>
> 単純なサンプル
>  http://www.eponymous.fsnet.co.uk/dotnetfaq.htm#11.4
>
> やや込み入ったサンプル
>  http://support.microsoft.com/support/kb/articles/Q301/2/28.ASP

どうも有難うございます。
やはりこれからは「ini」->「xml」になるのでしょうかね?
まぁ人の好みだとは思いますが。。
0271デフォルトの名無しさんNGNG
厨房というかDQNというか。。。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=333&forum=7
0272デフォルトの名無しさんNGNG
>>271
彼に関してはこのスレでどうぞ……

★デブプログラマーってどうよ★
http://mentai.2ch.net/test/read.cgi/prog/1001686611/
0273デフォルトの名無しさんNGNG
>272 ワラタ
0274名無しさん♯NGNG
ロゴが「Release Cadidate」に変わってるね。ヽ(´ー`)ノ
ダウンロードはまだか〜。

 http://beta.visualstudio.net/
0275名無しさん♯NGNG
MSDN Subscriber Downloadsで、VS.NET RC版が出たみたいね。

 http://communities.microsoft.com/newsgroups/previewFrame.asp?ICP=msdn&sLCID=us&sgroupURL=microsoft.public.dotnet.general&sMessageID=%253CuOixLA2WBHA.1408@tkmsftngp05%253E

でも、SDKはまだ?(・ε・)
0276名無しさん♯NGNG
激しくワラタ。

.NET Pet Shop

 http://www.gotdotnet.com/team/compare/petshop.aspx
0277DelフサギコNGNG
  ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < そういえば、ソースをアプする場所はこちらがありあます。
  ,;゙  ミ     \_____________
 ミ.  ミ
/゛゛゛゛
          ソース置き場
          http://www2.to/source


元はDelphi系から立ち上がってますが、
違う言語でも、OKというか「誰でも自由に利用」となっております。

お気に召しましたらご利用くださいな。

ってフサは管理者でもなんでもないのですが、ご紹介です。

ではではー。
0278デフォルトの名無しさんNGNG
>>276
なかなかやるね。

> The result?
> The exact same application functionality was
> implemented in just 1/3 the code using C#/ASP.NET,
> and it performs up to 28 times faster than previsouly
> published benchmarks of the J2EE application.
0279名無しさん♯NGNG
VS.NET RCは来年2月末までの時限爆弾つき。(藁

 http://discuss.develop.com/archives/wa.exe?A2=ind0110d&L=dotnet&D=0&P=10502
0280デフォルトの名無しさんNGNG
The Visual Studio .NET Release Candidate is recommended for users who
have not installed Beta 2, or users previewing the .NET Compact Framework
and Smart Device Extensions.
Users of Visual Studio .NET Beta 2 may install the Release Candidate;
however, the Release Candidate contains fewer features (this is the
Professional Edition whereas Beta 2 is the Enterprise Edition), and
a time bomb will prevent usage of the Release Candidate after
February 28, 2002.
Beta 2 users will probably choose to wait for the final release of
Visual Studio .NET, scheduled for late in the fourth quarter 2001.
0281名無しさん♯NGNG
Mobile Internet Toolkit Release Candidate

 http://msdn.microsoft.com/downloads/sample.asp?url=/msdn-files/027/001/516/msdncompositedoc.xml&frame=true
0282名無しさん♯NGNG
ヾ(´ー`)ノ

.Net Framework Code Going Gold

 http://www.eweek.com/article/0,3658,s%253D1884%2526a%253D16995,00.asp
0283名無しさん♯NGNG
About .NET Compact Framework

 http://www.gotdotnet.com/team/netcf/default.aspx
0284デフォルトの名無しさんNGNG
WriteFile(hFile, szStr, strlen(szStr), &dwAccBytes, NULL);

これでやってて、szStrが65535バイトを超えた時点で、
strlen=116なぞを返してきました。

つまりszStrはもともと16ビットのunsigend int(結構しらべても
出てないもの)だから上限は65535っていうことなの?

lstrlen使えば32ビットに拡張されるでしょうか?

実はせっかく書いたソースがいきなり116バイトになってしまったので
ひやひやもんだった。退避していてよかった・・・・
0285通りすがりのプログラマNGNG
>>274
PDCでも配布されたようで。
http://www.zdnet.co.jp/news/0110/24/e_gates.html
0286デフォルトの名無しさんNGNG
284はすれちがい。。
0287デフォルトの名無しさんNGNG
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=337&forum=7&3

お腹いっぱいになりそうだけど欲しいなCD。
0288デフォルトの名無しさんNGNG
C#勉強してるんですが日本語ドキュメントの「C# のご紹介」文章の
refキーワードのところサンプルコードのSwap関数間違ってるね。
static void Swap(ref int a, ref int b) {
int t = a;
a = b;
b = a;
}
b = a; は b = t; ですよね。なんとなく気になった。どうでもいいのでsage
0289デフォルトの名無しさんNGNG
SDKダウソはまだですか?
0290名無しさん♯NGNG
>>289
どうやら出ない説が濃厚ね。

MSはなるべくβ2使ってくれというスタンスだし、
SDK V1がすぐに出るからあまり意味がないのかな...?
0291デフォルトの名無しさんNGNG
V1はいつなの?
0292名無しさん♯NGNG
>>291
11月の中頃とか言われてるよん。
おそらくCOMDEXあたりだと思われ。
0293デフォルトの名無しさんNGNG
C#を学んでるものです。delegateについて聞きたいのですが。
以下のソースでコメントアウトしてるところにdelegeteを宣言すると
「名前空間"PrintAll'が見つかりません」と怒られます。
コメントアウトしてないところのdelegeteの宣言ではうまくいきます。
なぜでしょう?そう言う物なんでしょうか。根本的に何か理解不足の
ような気がしますが。よろしくお願いします。ソース突っ込みどころ
満載ですが、ご容赦ください。
0294ソースNGNG
namespace delegateTest
{
using System;

delegate void PrintAll( object o );//うまくいきます

public class Test
{
//public delegate void PrintAll( object o );//うまくいきません。

public void PrintText( object text )
{
Console.WriteLine( (string)text );
}
public void PrintInt( object Integer )
{
Console.WriteLine( ((int)Integer).ToString() );
}
}
public class MainClass
{
static void Main()
{
Test test = new Test();
PrintAll delegateModule = new PrintAll(test.PrintText);
delegateModule( "string" );
delegateModule = new PrintAll(test.PrintInt);
delegateModule( 123456 );
}
}
}
}
0295名無しさん♯NGNG
>>293-294
delegateの宣言は、IL的に見れば1種の型宣言よん。

つまり、Testクラスの中でdelegateを宣言すれば、
nested typeとして扱われるということ。

なので、PrintAllをTest.PrintAllと書けばOK。

  Test.PrintAll delegateModule = new Test.PrintAll(test.PrintText);
0296デフォルトの名無しさんNGNG
>>295 レスありがとうございます。レスのとおりしたらうまくいきました。
>nested typeとして扱われるということ
ここら辺りまで理解できておりません。
インスタンスのtest.PrintAllとしてはまっておりました。勉強しないと。
0297デフォルトの名無しさんNGNG
このスレで話題の川俣さんのC#入門なんだけど、delegateの説明しないで
イベント説明してるね。絶対意味わかんないよあれじゃ。
サンプルコードもあれだしな。
delegateつながりということで、、.
0298デフォルトの名無しさんNGNG
.NETでUDDI用のAPIはないんですか?
ドキュメントを見ても見つからなかったもので。
0299デフォルトの名無しさんNGNG
あぁぁぁ・・・
川俣さんより名無しさん#大先生のほうが上だった。
0300デフォルトの名無しさんNGNG
delegateとeventの違いって、分かるようで分からない。。。
0301デフォルトの名無しさんNGNG
川俣と比べるのは失礼だろう。
あんな低い人と比べたらレベル測れない。
0302デフォルトの名無しさんNGNG
>>300 私も分からないです。複数の関数を指せるくらいしか違いわからない。
それとイベントの呼び出し?に制約があるってことくらいしか。
あとEventArgs Classもわかない。EventArgs is the base class for event dataって
ヘルプに書いてるけど、event data ってなんでしょう?
0303デフォルトの名無しさんNGNG
たのむからこのスレに変な名前は出すな
0304名無しさん♯NGNG
>>298
UDDI SDKが必要よん。

 http://msdn.microsoft.com/downloads/sample.asp?url=/MSDN-FILES/027/001/711/msdncompositedoc.xml
0305名無しさん♯NGNG
>>300
delegate : 型の宣言,event : クラスメンバーの宣言ということで、根本的に違うよん。
eventと比べるべきは、delegateの「インスタンス」の方ね。

いちばんまぎらわしいのはこういうやつかな。

  delegate void SomeDelegate();

  class Test
  {
    public SomeDelegate Hoge;
  }

  class Test2
  {
    public event SomeDelegate Hoge;
  }

両方共通でできることは、

 ・+= でメソッド追加
 ・-= でメソッド削除
 ・クラス内部から、= でメソッド代入
 ・クラス内部から、メソッド実行

一方、eventではできないことは、

 ・クラス外部から、= でメソッド代入
 ・クラス外部から、メソッド実行

あと、eventは(propertyと同じで)abstract,override,sealed,virtualで宣言できるよん。
つまり、見た目はフィールドっぽいけど、ふるまいはメソッドだということ。

なので、フィールド対プロパティみたいな感じでとらえるといいのかな。
0306名無しさん♯NGNG
>>302
> ヘルプに書いてるけど、event data ってなんでしょう?

MouseEventArgsとかKeyPressEventArgsのプロパティを見てみると
感じがつかめると思うよん。
0307名無しさん♯NGNG
>>305のサンプルコード。

 http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=6
0308デフォルトの名無しさんNGNG
これはもうn大先生が入門書書くしか。
0309298NGNG
>>304
あらら、あったんですね。ありがとうございます。
0310デフォルトの名無しさんNGNG
ここにいるやつの半分ぐらいはn大先生無しには.NETしてなかっただろうね
0311デフォルトの名無しさんNGNG
サーバー移転あげ
0312デフォルトの名無しさんNGNG
http://www.atmarkit.co.jp/ さん、
ライターとして名無しさん♯を採用してください。
0313302NGNG
>>305-307 分かりやすい説明とサンプルコードありがとうございます。
違いについて理解できました。ありがとうございます。
>>306 もありがとうございます。感じがつかめました。^^
0314デフォルトの名無しさんNGNG
名無しさん♯ さんを賞賛するレスにすべて激しく同意します。
ほんとWebでもいいから名無しさん♯ さんのC#の講義を読んでみたい。
お忙しいから無理なのかな。このスレで我慢しますか。
0315仕様書無しさんNGNG
XMLSchemaを正規表現までサポートしてる!age
0316名無し~3.EXENGNG
ここで叩かれてるとは思いもしないでしょうなw>川○さん。
0317デフォルトの名無しさんNGNG
C#では多重継承をサポートしてないみたいなんですが
interfaceで似たようなことができると記憶してます
具体的なサンプルを探してみたのですが見つかりせません。
ヘルプでmultiple Inheritanceなどで引いて見たのですが、どうにも見つかりません。
C#でどのようにしたら多重継承みたいな?ことが実装できるのでしょう?
よろしくお願いします。そろそろ本買わないとなぁ〜 トホ
0318デフォルトの名無しさんNGNG
>>317
こういうやつか?

public class HogeHoge : Hoge, IFoo, IBar
0319デフォルトの名無しさんNGNG
>>318 継承するベースクラスがinterfaceならいいということですね。
ありがとうございました。しかしinterfaceを継承したら継承したクラスで
実装しないといけませんよね。C++みたいにベースクラスのメンバを
そのまま多重継承できないのでしょうか。厨房な質問で申し訳ないです。
0320デフォルトの名無しさんNGNG
> C++みたいにベースクラスのメンバを
> そのまま多重継承できないのでしょうか。
それは無理。というか、それができたら「多重継承をサポートしない」とは言えなくなる。(w
0321名無しさん♯NGNG
>>317
> C#では多重継承をサポートしてないみたいなんですが
> interfaceで似たようなことができると記憶してます

COMでおなじみのContainmentのことかしらん。
とりあえずサンプル作ってみたよん。

 http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=7

でも、これは再利用のテクというよりは、ただのトリックと考えた方がよさそうよ。
0322デフォルトの名無しさんNGNG
>>320 レスありがとうございます。確かにそうですよね(^^;
>>321 わかりやすいコードありがとうございます。
クラス図書いてみておおって感心しちゃいました。あとasも初めてみたので
勉強になりました。たしかに再利用で使うことは難しそうですね。
ありがとうございました。
0323デフォルトの名無しさんNGNG
C#のクラス定義をXMLスキーマに落とすことってできますか?
0324デフォルトの名無しさんNGNG
>>323
おれもそれ知りたかった。
System.Management.*とかをよく見てたけど
よく分からなかったよ。
0325デフォルトの名無しさんNGNG
>>323
xsd.exeで出来るかも。System.Managementは関係なかった。ごめん。
0326名無しさん♯NGNG
>>323
xsd.exeでできるよん。

でも、xsd.exeの中身はILだから、コードでももちろん実現可能。

 http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=8
0327デフォルトの名無しさんNGNG
>>326
#さん、お願いします。
どうもxsd.exeだとプロパティの定義しかされないのだけど、
これってそういうものなんでしょうか?
あと、XmlReflectionImporterというクラスがヘルプに
載ってないんですが、、、いろいろ面倒かけてすみません。
0328デフォルトの名無しさんNGNG
XmlReflectionImporterを検索していたらこんなサイトに辿りつきました。
http://www.aspalliance.com/quickstart/aspplus/samples/classbrowser/cs/classbrowser.aspx
しかもこっちはなんかSDKについてたドキュメントとnamespaceの構成が違う。
どうなってるんだろう・・・
0329デフォルトの名無しさんNGNG
#さん、ごめん。
おれがメチャクチャDQSなことが判明しました!
上のヤツはなかったことにして下さい!!
0330名無しさん♯NGNG
>>327
> どうもxsd.exeだとプロパティの定義しかされないのだけど、
> これってそういうものなんでしょうか?

シリアライズに必要なメンバーのみだから、
基本的にpublicのプロパティだけになると思うよん。

> あと、XmlReflectionImporterというクラスがヘルプに
> 載ってないんですが、、、

あのサンプルはxsd.exeを逆アセンブルして作ってるから、
非公開のクラス使いまくりになってる。(藁

このへんのクラスは、ildasm.exeでSystem.Xml.dllを見るしかないかも。

>>328
それはSDKについてくるサンプルよん。
おそらく、β2より前の途中版でのクラス構成だと思われ。
0331デフォルトの名無しさんNGNG
>>330
ありがとう#さん。なんとなく分かってきました!
■ このスレッドは過去ログ倉庫に格納されています