我有两个域名,example1.com和example2.com
从example1.com开始,我想在example2.com上调用我的JSON API.知道这是不允许的,它发生在我身上 - 这正是创建JSON P的原因.
问题是,如何修改我的JSON API以使其具备JSONP能力?
基本上,我如何创建回调api?
UPDATE
我的服务器端语言是PHP
也许对此有一个非常逻辑的解释,但我似乎无法理解为什么种子0和2,147,483,647产生相同的"随机"序列,使用.NET的随机类(系统).
快速代码示例:
var random1 = new Random(0);
var random2 = new Random(1);
var random3 = new Random(int.MaxValue); //2,147,483,647
var buffer1 = new byte[8];
var buffer2 = new byte[8];
var buffer3 = new byte[8];
random1.NextBytes(buffer1);
random2.NextBytes(buffer2);
random3.NextBytes(buffer3);
for (int i = 0; i < 8; i++)
{
Console.WriteLine("{0}\t\t{1}\t\t{2}", buffer1[i], buffer2[i], buffer3[i]);
}
Run Code Online (Sandbox Code Playgroud)
输出:
26 70 26
12 208 12
70 134 76
111 130 111
93 64 93
117 151 115
228 228 228
216 …Run Code Online (Sandbox Code Playgroud) 请参阅以下简单的转换示例:
int i = 1000;
object o = (object)i; // cast
i.CompareTo(1000);
o.CompareTo(1000); // error
Run Code Online (Sandbox Code Playgroud)
我理解为什么最后一行会产生错误.与int不同,对象不实现IComparable,因此不公开该CompareTo方法.以下还会生成错误:
string s = (string)i; // cast error
Run Code Online (Sandbox Code Playgroud)
由于ints和字符串之间没有继承,因此这里的转换不起作用.现在,看看这个:
AudioRender a = new AudioRender();
IBaseFilter b = (IBaseFilter)a; // cast
a.Run(1000); // error
b.Run(1000);
Run Code Online (Sandbox Code Playgroud)
(这些类来自DirectShowNet库.)
我不明白这一点.强制转换不会生成错误,并且在运行时不会抛出任何异常,因此我假设AudioRender实现了IBaseFilter.但是,AudioRender没有暴露任何IBaseFilter的方法,表明我的上述假设是错误的......
如果a实现b,为什么不a公开方法b?
否则,如果a没有实施b,为什么可以a投入b?
此外,我可以在不使用DirectShowNet的情况下重现此行为吗?
安装Visual Studio 2017并检查SQL Server数据工具功能后,我注意到没有安装LocalDB.如何将SQL Server LocalDB 2016添加到Visual Studio 2017安装中?我在安装VS2017时错过了一个复选框,还是安装程序中没有包含它?如果是这样,我如何配置VS2017,以便在Visual Studio的服务器浏览器中查看和连接我手动安装的LocalDB数据库?
在我的2D XNA游戏中绘制精灵的有效方法是什么?更具体地说,我把这个问题分成4个问题.
我过去常常声明Game1的spriteBatch 静态,SpriteBatch.Begin并.Close在每个中调用IDrawable.Draw.这不太好用.给每个drawable它自己的SpriteBatch也不能很好地工作.
Q1:我认为最好有一个 SpriteBatch实例,只调用一次开始/关闭.它是否正确?
目前,我Game1.Draw看起来像这样:
spriteBatch.Begin();
base.Draw(gameTime); // draws elements of Game.Components
// ...
spriteBatch.End();
Run Code Online (Sandbox Code Playgroud)
Q2:这样,Begin只调用一次.这是要走的路吗?你们是怎么解决这个问题的?
问题3:此外,每个组件都有自己的IGameComponent.LoadContent方法.我应该在那里加载我的内容吗?或者在父类中加载内容是否更好Game1.LoadContent?
我意识到我永远不应该加载相同的内容两次,所以我给了我的drawable组件静态和非静态组件Texture2D,并给了他们2个构造函数:
static Texture2D defaultTexture;
public Texture2D MyTexture;
public Enemy()
: this(defaultTexture) { }
public Enemy(Texture2D texture)
{
MyTexture = texture;
}
protected override void LoadContent()
{
if (MyTexture == null)
{
if (defaultTexture == null)
{
defaultTexture = …Run Code Online (Sandbox Code Playgroud) 在Chrome中,按Ctrl + P即可选择"保存到PDF".默认文件名等于用户要打印的html页面的标题.可以更改,而不更改HTML页面的实际标题?我希望在PDF的名称中有一个日期和时间,但我不希望在我的html页面的标题中显示日期和时间.
期待"来自派生的你好".但是得到"基地的你好".
class Program
{
interface IBase
{
void Method();
}
public class Base: IBase
{
public virtual void Method()
{
Console.WriteLine("Hello from the base.");
}
}
public class Derived : Base
{
public virtual new void Method()
{
Console.WriteLine("Hello from the derived.");
}
}
static void Main(string[] args)
{
IBase x = new Derived();
x.Method();
}
}
Run Code Online (Sandbox Code Playgroud)
那么为什么不调用派生类的方法呢?更重要的是,如何在不将x转换为Derived类型的情况下调用派生类方法?
在我的实际应用中,IBase有几个其他相关方法,Derived只替换了IBase中的两个方法.
似乎ASP.NET隐式地解释了被命名的方法GetX以及分别PostX作为GET和POST方法,因为它们的名称以HTTP方法名称为前缀.对于PUT和DELETE也是如此.
我遗憾地命名了一个方法,Delete但我希望它被解释为POST,所以我使用该[HttpPost]属性明确指定它是一个POST .这是有效的,只要它没有在界面中声明...
public interface IFooBarController
{
[HttpPost]
void DoSomething();
[HttpPost]
void Delete(int id);
}
public class FooBarController : IFooBarController
{
public void DoSomething()
{
// This API method can only be called using POST,
// as you would expect from the interface.
}
public void Delete(int id)
{
// This API method can only be called using DELETE,
// even though the interface specifies [HttpPost].
}
}
Run Code Online (Sandbox Code Playgroud)
我如何解决这个问题,而不必为每个实现指定HttpPostAttribute?
我有ISO 3166-1 (alpha-2)国家代码,它们是两个字母的代码,例如“US”和“NL”。我如何获得相应的标志表情符号?
编辑:最好我想在不使用国家代码与其相应表情符号之间的显式映射的情况下执行此操作。它已在 JavaScript 中完成,但我不确定如何在 C# 中完成。
我一直忙于C#4.0泛型,现在我基本上想做这样的事情:
public abstract class GenericTree<T> : Tree
where T : Fruit
{
public Tree(IFruitCollection<T> fruits)
: base(fruits) { }
}
Run Code Online (Sandbox Code Playgroud)
基本Tree类如下所示:
public abstract class Tree
{
private IFruitCollection<Fruit> fruits;
public IFruitCollection<Fruit> GetFruits
{
get { return fruits; }
}
public Tree(IFruitCollection<Fruit> fruits)
{
this.fruits = fruits;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的第一个问题.GenericTree的构造函数无法将泛型集合强制转换为水果集合.我也有GenericTree的实现:
public class AppleTree : GenericTree<Apple>
{
public AppleTree()
: base(new FruitCollection<Apple>) { }
}
Run Code Online (Sandbox Code Playgroud)
这是我的第二个问题.当我使用myAppleTree.GetFruits.Add(...)向AppleTree实例添加水果时,我不仅限于苹果.我被允许添加各种水果.我不想要这个.
我试图通过将其添加到GenericTree来解决该问题:
new public IFruitCollection<T> GetFruits
{
get { return base.GetFruits as IFruitCollection<T>; }
}
Run Code Online (Sandbox Code Playgroud)
但这也是不可能的.它总是以null返回null.当我的第一个问题得到解决时,这可能会得到解决.
IFruitCollection接口如下所示: …