我正在尝试使用此处SQLiteConnectionStringBuilder
的ADO.NET SQLite数据提供程序库中的类.类定义有一个名为DataSource的属性.
public sealed class SQLiteConnectionStringBuilder : DbConnectionStringBuilder { public SQLiteConnectionStringBuilder(); public SQLiteConnectionStringBuilder(string connectionString); public string DataSource { get; set; } }
我试图在我的powershell脚本中设置,即:
$csb = new-object -TypeName System.Data.SQLite.SQLiteConnectionStringBuilder $csb.DataSource = "C:\data\mydb.db";
我遇到的问题是SQLiteConnectionStringBuilder
从DbConnectionStringBuilder
哪个继承实现以下接口
public class DbConnectionStringBuilder : IDictionary, ICollection, IEnumerable, ....
因为类实现了这些接口,所以Powershell不会在类上设置属性DataSource,而是将其$csb
视为哈希表并向其添加键值对,即key="DataSource", value="C:\data\mydb.db"
.不用说这不是我想要的.那我现在该怎么办?如何强制Powershell设置属性而不将$ csb视为哈希表?谢谢!
如果您在创建对象时尝试设置此项,则可以使用以下Property
参数New-Object
:
$csb = New-Object -TypeName System.Data.SQLite.SQLiteConnectionStringBuilder -Property @{ DataSource = "C:\data\mydb.db" }
但是,如果您尝试稍后设置该属性,我发现的唯一方法是使用.NET Reflection API有点笨拙:
$csb.GetType().GetProperty("DataSource").SetValue($csb, "C:\data\mydb.db")