在Java中,有所谓的方法isJavaIdentifierStart和isJavaIdentifierPart对可用于判断一个字符串是一个有效的Java标识,像这样的字符类别:
public boolean isJavaIdentifier(String s) {
int n = s.length();
if (n==0) return false;
if (!Character.isJavaIdentifierStart(s.charAt(0)))
return false;
for (int i = 1; i < n; i++)
if (!Character.isJavaIdentifierPart(s.charAt(i)))
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
C#有这样的东西吗?
我正在尝试使用WCF使用RESTful Web服务.我无法控制Web服务的格式,所以我必须在这里和那里做一些解决方法.然而,我似乎无法解决的一个主要问题是如何使WCF将枚举反序列化为字符串.
这是我的代码(显然名称已更改):
[DataContract]
public enum Foo
{
[EnumMember( Value = "bar" )]
Bar,
[EnumMember( Value = "baz" )]
Baz
}
[DataContract]
public class UNameIt
{
[DataMember( Name = "id" )]
public long Id { get; private set; }
[DataMember( Name = "name" )]
public string Name { get; private set; }
[DataMember( Name = "foo" )]
public Foo Foo { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
这是反序列化失败的返回数据:
{
"id":123456,
"name":"John Doe",
"foo":"bar"
}
Run Code Online (Sandbox Code Playgroud)
最后,抛出异常:
反序列化Service.Foo类型的对象时出错.值'bar'无法解析为'Int64'类型.
我不想切换到使用XmlSerializer,因为在它的许多其他缺点中,它不会让我在属性上拥有私有的setter.
如何使WCF(或者,DataContractSerializer)将我的枚举视为字符串值?
编辑:这似乎是不可能的,行为是它的设计方式.谢谢微软,不给我们选择,不得不诉诸黑客.按照somori建议的方式这样做似乎是获得带有JSON和WCF的字符串枚举的唯一方法.
我有一个属性视图模型Fields这是一个ObservableCollection<FieldVM>.在使用此属性的视图中,我有ItemsControl这样的:
...
<ItemsControl ItemsSource="{Binding Fields}" />
...
Run Code Online (Sandbox Code Playgroud)
FieldVM是一个抽象类,由TextFieldVM和类实现EnumFieldVM.在运行时,这些FieldVM实现添加到Fields属性中,我希望它们在我的视图中显示其关联的视图.
在WPF中,这样做很简单,我一直这样做.您只需在适当的资源字典中执行此操作,一切都按预期工作:
<DataTemplate DataType="{x:Type vm:TextFieldVM}">
<v:TextFieldView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:EnumFieldVM}">
<v:EnumFieldView />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
现在,我第一次在Silverlight工作,我预计我可以做同样的事情,但DataTemplate没有DataType属性.我很难过.什么是Silverlight这样做的方式?
在PHP中(使用内置函数)我想转换/格式化一个带小数的数字,这样只显示非零小数.然而,我的另一个要求是,如果它是一个没有小数值的数字,我仍然希望显示为零.例子:
9.000 -> 9.0
9.100 -> 9.1
9.120 -> 9.12
9.123 -> 9.123
Run Code Online (Sandbox Code Playgroud)
rtrim($value, "0")差不多了.rtrim的问题在于它离开9.000了9..sprintf()看起来像是一个候选人,但我不能让它有一个可变的小数.number_format()服务于不同的目的,这些都是我能想到的......
再次,我想指出我不是在寻找你自己的解决方案,我正在寻找一种使用内部PHP功能来实现这一目标的方法.我可以编写一个能够自己轻松完成此功能的函数,所以请保持这样的答案.
我有一个Grid与Border它周围.鼠标悬停在上面Grid,我想改变它的样式Border.我该怎么做呢?这是我尝试过的,到目前为止没有任何成功:
<Border Name="Border" BorderBrush="Transparent" BorderThickness="1" CornerRadius="2">
<Grid>
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="BorderBrush" Value="#FFB9D7FC" />
</Trigger>
</Style.Triggers>
</Style>
</Grid.Style>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
...
</Grid>
</Border>
Run Code Online (Sandbox Code Playgroud)
在尝试构建此XAML时,我收到错误
无法在样式设置器上设置TargetName属性.
但我想不出有任何其他办法可以做到这一点.非常感谢帮助.使用任何代码隐藏是不可能的.
使用DwmExtendFrameIntoClientArea启用Aero Glass 的API调用可以正常工作.但是,我希望它也可以在Aero Glass被禁用时工作,就像它在Windows控制面板中的工作方式一样:

注意框架是如何扩展到客户区的,即使Aero Glass被禁用了?当我DwmExtendFrameIntoClientArea在我的应用程序中进行API调用时,返回的HRESULT肯定不成功,我的应用程序最终看起来像这样:
http://img197.imageshack.us/img197/9629/clientapplication.png
通常,启用Aero Glass后,边框会向下延伸到导航按钮下方,就像在控制面板中一样.我该怎么做呢?DwmExtendFrameIntoClientArea显然不起作用.
顺便说一句,如果它是相关的,我的应用程序是一个WPF应用程序.
为了防止有人轻易抓取我的数据,我将来自我服务的数据缓存为加密文件(基本上是复制保护).
但是,为了做到这一点,我必须将加密密钥存储在.NET程序集中,以便能够加密和解密这些文件.
知道像Red Gate的.NET Reflector这样的工具可以直接拉出我的钥匙,我觉得这不是一种非常安全的方式......有没有最好的做法呢?
因此,使用the ODataController,你可以控制返回的内容,如果有人这样做/odata/Foos(42)/Bars,因为你会被调用,FoosController所以:
public IQueryable<Bar> GetBars([FromODataUri] int key) { }
Run Code Online (Sandbox Code Playgroud)
但是,如果你想控制什么时候返回什么/odata/Foos?$expand=Bars呢?你怎么处理那件事呢?它会触发此方法:
public IQueryable<Foo> GetFoos() { }
Run Code Online (Sandbox Code Playgroud)
而且我认为它只是.Include("Bars")在IQueryable<Foo>你返回时做的,所以...我如何得到更多的控制?特别是,我如何以OData不破坏的方式进行操作(例如$ select,$ orderby,$ top等继续工作.)
我问了一个关于如何限制python上传的问题,这让我得到了这个答案,在那里我被告知了一个叫做的小帮助库socket-throttle.对于常规HTTP而言,这一切都很好,而且对于套接字的大多数普通用途也可能.但是,我正在尝试限制SSL连接,并尝试socket-throttle与库存SSL库(隐式使用requests)结合使用会导致库中的异常深入:
File "***.py", line 590, in request
r = self.session.get(url, headers=extra_headers)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 394, in get
return self.request('GET', url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 382, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 485, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 324, in send
timeout=timeout
File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connectionpool.py", line 478, in urlopen
body=body, headers=headers)
File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connectionpool.py", line 285, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/lib/python2.7/httplib.py", line 973, in …Run Code Online (Sandbox Code Playgroud) .net ×5
c# ×4
wpf ×3
aero ×1
dwm ×1
encryption ×1
enums ×1
identifier ×1
key-storage ×1
mouseevent ×1
numbers ×1
odata ×1
php ×1
python ×1
silverlight ×1
sockets ×1
ssl ×1
styles ×1
tfs ×1
throttling ×1
wcf ×1
xaml ×1