前提・実現したいこと
VB.Netで作ったdllのクラスをC#.Netから使用しようとしているのですが、
インスタンス生成時にNullReferenceExceptionが発生してしまいます。
恐らくケアレスミスだと思うのですが、どこが間違っているか教えてください。
発生している問題・エラーメッセージ
System.NullReferenceException:'オブジェクト参照がオブジェクトインスタンスに設定されていません。'
該当のソースコード
c#,
1【Form1.cs】 2public partial class Form1() :Form { 3 public Form1() { 4 InitializeComponent(); 5 } 6 private void btnExecute_Click(object sender, EventArgs e) { 7 LogLibrary.CommonLog.Log loglib = 8 new LogLibrary.CommonLog.Log("log.txt"); 9 //↑ここでNullReferenceException 10 loglib.Write(""); 11 } 12} 13 14【Log.vb】 15Namespace CommonLog 16 Public Class Log 17 Private fileName As String = "default.txt" 18 Public Sub New(file As String) 19 Me.fileName = file 20 End Sub 21 Public Sub Write(ByVal value As String) 22 LogLib.Write(Me.fileName, value) 23 End Sub 24 End Class 25End Namespace
試したこと
ビルドは通っていますし、dllが参照に追加されていることは確認済みです。
補足情報(FW/ツールのバージョンなど)
VisualStudio2019
.NET Framework or Core どっちかとそのバージョンを書いてください。
WinForms アプリでライブラリを参照設定に加えてますか?
LogクラスのWriteメソッド内のLogLibが謎なので邪推してしまうのですが、
loglib.Write("");
ここで発生しているとかありませんか?
とりあえず例外発生時のStackTraceを見てC#側で発生しているのかVB.NETのDLL側で発生しているのかの切り分けは出来ませんか?
.Net Frameworkのバージョンは4.7.2です。
WinForms アプリでライブラリを参照設定に加えてますか?
他の方が指摘している Log.vb のコードの間違いを直してください。
回答2件
あなたの回答
tips
プレビュー