我有以下课程:
[Msg(Value = "YaaY")]
public class PersonContainer<T> where T : new()
{
...
}
public class HappyPerson
{
...
}
[Msg(Value = "NaaY")]
public class SadPerson
{
...
}
Run Code Online (Sandbox Code Playgroud)
使用以下方法,我可以获得"PersonContainer"的属性:
public void GetMsgVals(object personContainer)
{
var info = personContainer.GetType();
var attributes = (MsgAttribute[])info.GetCustomAttributes(typeof(MsgAttribute), false);
var vals= attributes.Select(a => a.Value).ToArray();
}
Run Code Online (Sandbox Code Playgroud)
但是我只获得"PersonContainer"(即"YaaY")的属性,如何T (HappyPerson [if any] or SadPerson["NaaY"])在不知道T是什么的情况下获得运行时的属性?
我有一个包含以下文件的文件夹:
我希望能够实现以下输出: File_1.txt - File_2.txt
我试过跑:
ls .\file*.txt | %{$_.Name}
除了在不同的行上,它返回我想要的内容,如何加入给定字符返回的文件(-在本例中)?
任何帮助表示赞赏.
我正在使用ServiceStack.Ormlite v3.9.71并拥有以下代码段,我在其中打开 Ormlite SQLite 事务,假设我想在代码中其他地方的命令中使用此事务:
var connFactory = new OrmLiteConnectionFactory("ConnectionString", SqliteOrmLiteDialectProvider.Instance)
using (IDbConnection db = connFactory.Open()) // using var doesn't make a difference
using (IDbTransaction tran = db.OpenTransaction()) // using var or even db.BeginTransaction() doesn't make a difference
{
// I do lots of boring stuff
...
// Somewhere else in the code
using (var cmd = db.CreateCommand())
{
cmd.Transaction = tran; // get an error
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我得到:
A first chance exception of type 'System.InvalidCastException' occurred in …Run Code Online (Sandbox Code Playgroud) 给定以下类型:
class Foo {
constructor(
private one: string,
private two: string,
private three: string) {
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能有一个数组,其值是类型的属性?
例如,我需要能够得到一个数组:
['一二三']
注意我需要从类型而不是实例中提取属性,否则我可以简单地使用Object.keys(instanceOfFoo).