Quantcast
Channel: わんくま同盟
Viewing all articles
Browse latest Browse all 994

共有フォルダ用のクラス(VB)

$
0
0

サンプルアプリのライブラリ側に共有フォルダ用のクラスを追加しました。

共有フォルダを表すクラス Volume クラスは DomainObject クラスを継承します。

そして Webアプリでデータソースとして使えるようにします。

 

<DataObject()>

Public NotInheritable ClassVolume

  InheritsDomainObject

 

#Region" プライベートフィールド "

  Private _keywords() As String

#End Region

 

#Region" フレンドコンストラクタ "

  'DirectoryEntry を指定して Volume クラスの新しいインスタンスを初期化します。

  Friend Sub New(entry AsDirectoryEntry)

    MyBase.New(entry)

    _keywords = entry.Properties.Item("keywords").Cast(Of String)().ToArray()

  End Sub

#End Region

 

#Region" パブリックプロパティ "

  'キーワードを取得または設定します。

  Public Property Keywords As String()

    Get

      Return _keywords

    End Get

    Set(value As String())

      If MyBase.IsDisposed Then

        Throw NewObjectDisposedException(Me.GetType().Name)

      End If

      MyBase.Entry.Properties.Item("keywords").Value = value

      _keywords = MyBase.Entry.Properties.Item("keywords").Cast(Of String)().ToArray()

    End Set

  End Property

 

  'UNC パスを取得または設定します。

  Public Property UncPath As String

    Get

      If MyBase.IsDisposed Then

        Throw NewObjectDisposedException(Me.GetType().Name)

      End If

      ReturnDirectCast(MyBase.Entry.Properties.Item("uNCName").Value, String)

    End Get

    Set(value As String)

      If MyBase.IsDisposed Then

        Throw NewObjectDisposedException(Me.GetType().Name)

      End If

      MyBase.Entry.Properties.Item("uNCName").Value = value

    End Set

  End Property

#End Region

 

#Region" パブリックメソッド "

  '指定した名前の共有フォルダを検索します。このメソッドはデータバインド用です。

  <DataObjectMethod(DataObjectMethodType.Select)>

  Public Shared Function FindByName(name As String) AsVolume

    Return DirectCast(DirectoryAccess.FindDirectoryObject(name, CategoryType.Volume), Volume)

  End Function

 

  '共有フォルダの一覧を取得します。このメソッドはデータバインド用です。

  <DataObjectMethod(DataObjectMethodType.Select)>

  Public Shared Function GetVolumes() AsIList(OfVolume)

    Return DirectoryAccess.GetVolumes()   '共有フォルダを取得

  End Function

#End Region

End Class

 

キーワードは複数登録できるので配列にしてます。(=> プロパティ画面

取得で Nothingが返されないよう keywords 属性の値を配列にしたものを変数 _keywords に保持してそれを返すようにしてます。

設定で value が Nothingの場合は MyBase.Entry.Properties.Item("keywords").Value(PropertyValueCollectionクラスの Value プロパティ)は Nothingになりますが、PropertyValueCollectionインスタンスはコレクションが空になるだけです。

なので、MyBase.Entry.Properties.Item("keywords").Cast(Of String)().ToArray() は空の配列を返すため、_keywords が Nothingになることはないです。

 

データバインド用のメソッドは Webアプリで必要になります。内部で DirectoryAccessクラスのメソッドを呼んでますが、これについては別途書きます。


Viewing all articles
Browse latest Browse all 994

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>