我正在使用C#和Json.NET.如果我有一个JObject,我想要一个对象内的键列表,类似于object.Keys()
返回对象中的键的方式.这似乎很明显,但我很难找到一种方法来做到这一点.
编辑: 我正在遍历对象,我想在我经历时吐出对象中的所有键.我意识到这个例子会导致多次看到相同的密钥,这对我的需求是可以的.
public void SomeMethod(JObject parent) {
foreach (JObject child in parent.Children()) {
if (child.HasValues) {
//
// Code to get the keys here
//
SomeMethod(child);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在看Oracle中的脚本,我看到了一些我不认识的东西
REM INSERTING into database1."Users"
SET DEFINE OFF;
Insert into database1."Users" ("id","right") values ('1','R');
Run Code Online (Sandbox Code Playgroud)
我正在寻找关于"set define off"的文档,它实际上是在写"禁用解释命令以用它们的值替换替换变量"
我真的不明白他们想说什么.
谁能帮我?
如果我使用如下自动属性在C#中定义结构:
public struct Address
{
public Address(string line1, string line2, string city, string state, string zip)
{
Line1 = line1;
Line2 = line2;
City = city;
State = state;
Zip = zip;
}
public string Line1 { get; protected set; }
public string Line2 { get; protected set; }
public string City { get; protected set; }
public string State { get; protected set; }
public string Zip { get; protected set; }
}
Run Code Online (Sandbox Code Playgroud)
当我尝试构建文件时,我收到编译错误说The 'this' object cannot be …
我正在尝试为Enumerable类型的Where方法检索MethodInfo:
typeof (Enumerable).GetMethod("Where", new Type[] {
typeof(IEnumerable<>),
typeof(Func<,>)
})
Run Code Online (Sandbox Code Playgroud)
但得到null.我究竟做错了什么?
我在使用GalaSoft MVVM Light框架将参数传递给relaycommand时遇到问题.我知道mvvm light的relay命令的实现不使用lambda参数,所以我做了一些研究,并找到了一种方法,人们通过做这样的事情来解决它:
public RelayCommand ProjMenuItem_Edit
{
get
{
if (_projmenuItem_Edit == null)
{
//This should work....
_projmenuItem_Edit = new RelayCommand(ProjEditNode);
}
return _projmenuItem_Edit;
}
}
private void ProjEditNode(object newText)
{
var str = newText as string;
OrganLocationViewModel sel =
ProjectOrganLocationView.GetExtendedTreeView().GetTopNode();
//Console.WriteLine(sel.OrganDisplayName);
sel.OrganDisplayName = str;
}
Run Code Online (Sandbox Code Playgroud)
但是,我一直在_projmenuItem_Edit = new RelayCommand(ProjEditNode);
说错误Argument 1: cannot convert from 'method group' to 'System.Action'
我错过了什么?
我使用EF6 report
在我的数据库中存储该类的实例.数据库已包含数据.说我想添加一个属性report
,
public class report {
// ... some previous properties
// ... new property:
public string newProperty{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我转到包管理器控制台并执行
add-migration Report-added-newProperty
update-database
Run Code Online (Sandbox Code Playgroud)
我将在'/ Migrations'文件夹中获取一个文件,newProperty
向表中添加一列.这很好用.但是,对于数据库中较旧的条目,该值newProperty
现在为空字符串.但我希望它是,例如,"老".
所以我的问题是:如何在迁移脚本(或其他地方)中为新属性(任何类型)设置默认值?
让我感到困惑的东西,但从来没有引起任何问题......推荐的事件发送方式如下:
public event EventHandler SomeEvent;
...
{
....
if(SomeEvent!=null)SomeEvent();
}
Run Code Online (Sandbox Code Playgroud)
在多线程环境中,此代码如何保证另一个线程不会更改SomeEvent
检查null和事件调用之间的调用列表?
使用C#,我有一个datetime
对象,但我想要的只是日期时间对象中的小时和分钟.
因此,例如:如果我有一个DateTime
的对象July 1 2012 12:01:02
我想要的是July 1 2012 12:01:00
在datetime
对象(所以,没有秒).
我最近看到一些C#代码,其中的接口声明和实现位于同一个文件中,就像这样
namespace MyNameSpace.Foo
{
public interface IFoo{
void DoThis();
}
public class Foo : IFoo {
public void DoThis();
}
}
Run Code Online (Sandbox Code Playgroud)
乍一看,在同一个文件中声明和实现似乎都是错误的,但是有实际的好处.例如,当您在Visual Studio中转到定义时,接口和实现位于同一文件中.此方法不会禁止您使用其他接口实现,例如单元测试可能需要.对于只有一个实现的接口,我认为这可能是一种实用的方法.
好主意还是坏主意?
扩展问题:
当您有接口引用时,人们如何使用Visual Studio导航到实现IFoo myFoo = FooFactory.getFoo(MY_FOO);
如果我右键单击IFoo并选择Go To Definition我可以获得接口声明.有没有办法让我获得IFoo的实现列表,因为这是我真正感兴趣的内容.
c# ×8
.net ×2
cil ×1
events ×1
fiddler ×1
json.net ×1
mvvm-light ×1
oracle ×1
reflection ×1
relaycommand ×1
sqlplus ×1
struct ×1
wpf ×1